├── .gitignore ├── .rustfmt.toml ├── .travis.yml ├── Cargo.toml ├── docs ├── .lock ├── COPYRIGHT.txt ├── FiraSans-LICENSE.txt ├── FiraSans-Medium.woff ├── FiraSans-Regular.woff ├── LICENSE-APACHE.txt ├── LICENSE-MIT.txt ├── SourceCodePro-LICENSE.txt ├── SourceCodePro-Regular.woff ├── SourceCodePro-Semibold.woff ├── SourceSerifPro-Bold.ttf.woff ├── SourceSerifPro-It.ttf.woff ├── SourceSerifPro-LICENSE.txt ├── SourceSerifPro-Regular.ttf.woff ├── aliases.js ├── brush.svg ├── dark.css ├── down-arrow.svg ├── implementors │ ├── core │ │ ├── clone │ │ │ └── trait.Clone.js │ │ ├── cmp │ │ │ ├── trait.Eq.js │ │ │ ├── trait.Ord.js │ │ │ ├── trait.PartialEq.js │ │ │ └── trait.PartialOrd.js │ │ ├── convert │ │ │ └── trait.From.js │ │ ├── fmt │ │ │ ├── trait.Binary.js │ │ │ ├── trait.Debug.js │ │ │ ├── trait.Display.js │ │ │ ├── trait.LowerHex.js │ │ │ ├── trait.Octal.js │ │ │ └── trait.UpperHex.js │ │ ├── hash │ │ │ └── trait.Hash.js │ │ ├── iter │ │ │ └── traits │ │ │ │ ├── trait.Extend.js │ │ │ │ └── trait.FromIterator.js │ │ ├── marker │ │ │ ├── trait.Copy.js │ │ │ ├── trait.Send.js │ │ │ └── trait.Sync.js │ │ └── ops │ │ │ ├── arith │ │ │ ├── trait.Sub.js │ │ │ └── trait.SubAssign.js │ │ │ ├── bit │ │ │ ├── trait.BitAnd.js │ │ │ ├── trait.BitAndAssign.js │ │ │ ├── trait.BitOr.js │ │ │ ├── trait.BitOrAssign.js │ │ │ ├── trait.BitXor.js │ │ │ ├── trait.BitXorAssign.js │ │ │ └── trait.Not.js │ │ │ ├── deref │ │ │ ├── trait.Deref.js │ │ │ └── trait.DerefMut.js │ │ │ └── drop │ │ │ └── trait.Drop.js │ ├── samp │ │ ├── amx │ │ │ └── trait.AmxExt.js │ │ ├── cell │ │ │ └── repr │ │ │ │ └── trait.AmxPrimitive.js │ │ ├── exports │ │ │ └── trait.Export.js │ │ └── prelude │ │ │ └── trait.AmxCell.js │ ├── samp_sdk │ │ ├── cell │ │ │ └── repr │ │ │ │ ├── trait.AmxCell.js │ │ │ │ └── trait.AmxPrimitive.js │ │ └── exports │ │ │ └── trait.Export.js │ └── std │ │ └── error │ │ └── trait.Error.js ├── light.css ├── main.js ├── normalize.css ├── noscript.css ├── plugin │ ├── AmxLoad.v.html │ ├── AmxUnload.v.html │ ├── Load.v.html │ ├── Supports.v.html │ ├── Unload.v.html │ ├── all.html │ ├── fn.AmxLoad.html │ ├── fn.AmxUnload.html │ ├── fn.Load.html │ ├── fn.Supports.html │ ├── fn.Unload.html │ ├── index.html │ └── sidebar-items.js ├── rustdoc.css ├── samp │ ├── all.html │ ├── amx │ │ ├── Allocator.t.html │ │ ├── Amx.t.html │ │ ├── AmxExt.t.html │ │ ├── AmxIdent.t.html │ │ ├── fn.get.html │ │ ├── get.v.html │ │ ├── index.html │ │ ├── sidebar-items.js │ │ ├── struct.Allocator.html │ │ ├── struct.Amx.html │ │ ├── struct.AmxIdent.html │ │ └── trait.AmxExt.html │ ├── args │ │ ├── Args.t.html │ │ ├── index.html │ │ ├── sidebar-items.js │ │ └── struct.Args.html │ ├── cell │ │ ├── Ref.t.html │ │ ├── buffer │ │ │ ├── Buffer.t.html │ │ │ ├── UnsizedBuffer.t.html │ │ │ ├── index.html │ │ │ ├── sidebar-items.js │ │ │ ├── struct.Buffer.html │ │ │ └── struct.UnsizedBuffer.html │ │ ├── index.html │ │ ├── repr │ │ │ ├── AmxCell.t.html │ │ │ ├── AmxPrimitive.t.html │ │ │ ├── index.html │ │ │ ├── sidebar-items.js │ │ │ ├── trait.AmxCell.html │ │ │ └── trait.AmxPrimitive.html │ │ ├── sidebar-items.js │ │ ├── string │ │ │ ├── AmxString.t.html │ │ │ ├── fn.put_in_buffer.html │ │ │ ├── index.html │ │ │ ├── put_in_buffer.v.html │ │ │ ├── sidebar-items.js │ │ │ └── struct.AmxString.html │ │ └── struct.Ref.html │ ├── consts │ │ ├── AmxExecIdx.t.html │ │ ├── AmxFlags.t.html │ │ ├── ServerData.t.html │ │ ├── Supports.t.html │ │ ├── enum.AmxExecIdx.html │ │ ├── enum.ServerData.html │ │ ├── index.html │ │ ├── sidebar-items.js │ │ ├── struct.AmxFlags.html │ │ └── struct.Supports.html │ ├── encoding │ │ ├── WINDOWS_1251.v.html │ │ ├── WINDOWS_1252.v.html │ │ ├── fn.set_default_encoding.html │ │ ├── index.html │ │ ├── set_default_encoding.v.html │ │ ├── sidebar-items.js │ │ ├── static.WINDOWS_1251.html │ │ └── static.WINDOWS_1252.html │ ├── error │ │ ├── AmxError.t.html │ │ ├── AmxResult.t.html │ │ ├── enum.AmxError.html │ │ ├── index.html │ │ ├── sidebar-items.js │ │ └── type.AmxResult.html │ ├── exec_public.m.html │ ├── exports │ │ ├── Align16.t.html │ │ ├── Align32.t.html │ │ ├── Allot.t.html │ │ ├── Callback.t.html │ │ ├── Cleanup.t.html │ │ ├── Clone.t.html │ │ ├── Exec.t.html │ │ ├── Export.t.html │ │ ├── Exports.t.html │ │ ├── FindNative.t.html │ │ ├── FindPubVar.t.html │ │ ├── FindPublic.t.html │ │ ├── FindTagId.t.html │ │ ├── Flags.t.html │ │ ├── GetAddr.t.html │ │ ├── GetNative.t.html │ │ ├── GetPubVar.t.html │ │ ├── GetPublic.t.html │ │ ├── GetString.t.html │ │ ├── GetTag.t.html │ │ ├── GetUserData.t.html │ │ ├── Init.t.html │ │ ├── InitJIT.t.html │ │ ├── MemInfo.t.html │ │ ├── NameLength.t.html │ │ ├── NativeInfo.t.html │ │ ├── NumNatives.t.html │ │ ├── NumPubVars.t.html │ │ ├── NumPublics.t.html │ │ ├── NumTags.t.html │ │ ├── Push.t.html │ │ ├── PushArray.t.html │ │ ├── PushString.t.html │ │ ├── RaiseError.t.html │ │ ├── Register.t.html │ │ ├── Release.t.html │ │ ├── SetCallback.t.html │ │ ├── SetDebugHook.t.html │ │ ├── SetString.t.html │ │ ├── SetUserData.t.html │ │ ├── StrLen.t.html │ │ ├── UTF8Check.t.html │ │ ├── UTF8Get.t.html │ │ ├── UTF8Len.t.html │ │ ├── UTF8Put.t.html │ │ ├── enum.Exports.html │ │ ├── index.html │ │ ├── sidebar-items.js │ │ ├── struct.Align16.html │ │ ├── struct.Align32.html │ │ ├── struct.Allot.html │ │ ├── struct.Callback.html │ │ ├── struct.Cleanup.html │ │ ├── struct.Clone.html │ │ ├── struct.Exec.html │ │ ├── struct.FindNative.html │ │ ├── struct.FindPubVar.html │ │ ├── struct.FindPublic.html │ │ ├── struct.FindTagId.html │ │ ├── struct.Flags.html │ │ ├── struct.GetAddr.html │ │ ├── struct.GetNative.html │ │ ├── struct.GetPubVar.html │ │ ├── struct.GetPublic.html │ │ ├── struct.GetString.html │ │ ├── struct.GetTag.html │ │ ├── struct.GetUserData.html │ │ ├── struct.Init.html │ │ ├── struct.InitJIT.html │ │ ├── struct.MemInfo.html │ │ ├── struct.NameLength.html │ │ ├── struct.NativeInfo.html │ │ ├── struct.NumNatives.html │ │ ├── struct.NumPubVars.html │ │ ├── struct.NumPublics.html │ │ ├── struct.NumTags.html │ │ ├── struct.Push.html │ │ ├── struct.PushArray.html │ │ ├── struct.PushString.html │ │ ├── struct.RaiseError.html │ │ ├── struct.Register.html │ │ ├── struct.Release.html │ │ ├── struct.SetCallback.html │ │ ├── struct.SetDebugHook.html │ │ ├── struct.SetString.html │ │ ├── struct.SetUserData.html │ │ ├── struct.StrLen.html │ │ ├── struct.UTF8Check.html │ │ ├── struct.UTF8Get.html │ │ ├── struct.UTF8Len.html │ │ ├── struct.UTF8Put.html │ │ └── trait.Export.html │ ├── index.html │ ├── macro.exec_public!.html │ ├── macro.exec_public.html │ ├── plugin │ │ ├── SampPlugin.t.html │ │ ├── enable_process_tick.v.html │ │ ├── fn.enable_process_tick.html │ │ ├── fn.logger.html │ │ ├── index.html │ │ ├── logger.v.html │ │ ├── sidebar-items.js │ │ └── trait.SampPlugin.html │ ├── prelude │ │ ├── Amx.t.html │ │ ├── AmxCell.t.html │ │ ├── AmxResult.t.html │ │ ├── AmxString.t.html │ │ ├── Buffer.t.html │ │ ├── Ref.t.html │ │ ├── UnsizedBuffer.t.html │ │ ├── index.html │ │ ├── sidebar-items.js │ │ ├── struct.Amx.html │ │ ├── struct.AmxString.html │ │ ├── struct.Buffer.html │ │ ├── struct.Ref.html │ │ ├── struct.UnsizedBuffer.html │ │ ├── trait.AmxCell.html │ │ └── type.AmxResult.html │ ├── raw │ │ ├── functions │ │ │ ├── Align16.t.html │ │ │ ├── Align32.t.html │ │ │ ├── Allot.t.html │ │ │ ├── AmxCallback.t.html │ │ │ ├── AmxDebug.t.html │ │ │ ├── AmxNative.t.html │ │ │ ├── Callback.t.html │ │ │ ├── Cleanup.t.html │ │ │ ├── Clone.t.html │ │ │ ├── Exec.t.html │ │ │ ├── FindNative.t.html │ │ │ ├── FindPubVar.t.html │ │ │ ├── FindPublic.t.html │ │ │ ├── FindTagId.t.html │ │ │ ├── Flags.t.html │ │ │ ├── GetAddr.t.html │ │ │ ├── GetNative.t.html │ │ │ ├── GetPubVar.t.html │ │ │ ├── GetPublic.t.html │ │ │ ├── GetString.t.html │ │ │ ├── GetTag.t.html │ │ │ ├── GetUserData.t.html │ │ │ ├── Init.t.html │ │ │ ├── InitJIT.t.html │ │ │ ├── Logprintf.t.html │ │ │ ├── MemInfo.t.html │ │ │ ├── NameLength.t.html │ │ │ ├── NativeInfo.t.html │ │ │ ├── NumNatives.t.html │ │ │ ├── NumPubVars.t.html │ │ │ ├── NumPublics.t.html │ │ │ ├── NumTags.t.html │ │ │ ├── Push.t.html │ │ │ ├── PushArray.t.html │ │ │ ├── PushString.t.html │ │ │ ├── RaiseError.t.html │ │ │ ├── Register.t.html │ │ │ ├── Release.t.html │ │ │ ├── SetCallback.t.html │ │ │ ├── SetDebugHook.t.html │ │ │ ├── SetString.t.html │ │ │ ├── SetUserData.t.html │ │ │ ├── StrLen.t.html │ │ │ ├── UTF8Check.t.html │ │ │ ├── UTF8Get.t.html │ │ │ ├── UTF8Len.t.html │ │ │ ├── UTF8Put.t.html │ │ │ ├── index.html │ │ │ ├── sidebar-items.js │ │ │ ├── type.Align16.html │ │ │ ├── type.Align32.html │ │ │ ├── type.Allot.html │ │ │ ├── type.AmxCallback.html │ │ │ ├── type.AmxDebug.html │ │ │ ├── type.AmxNative.html │ │ │ ├── type.Callback.html │ │ │ ├── type.Cleanup.html │ │ │ ├── type.Clone.html │ │ │ ├── type.Exec.html │ │ │ ├── type.FindNative.html │ │ │ ├── type.FindPubVar.html │ │ │ ├── type.FindPublic.html │ │ │ ├── type.FindTagId.html │ │ │ ├── type.Flags.html │ │ │ ├── type.GetAddr.html │ │ │ ├── type.GetNative.html │ │ │ ├── type.GetPubVar.html │ │ │ ├── type.GetPublic.html │ │ │ ├── type.GetString.html │ │ │ ├── type.GetTag.html │ │ │ ├── type.GetUserData.html │ │ │ ├── type.Init.html │ │ │ ├── type.InitJIT.html │ │ │ ├── type.Logprintf.html │ │ │ ├── type.MemInfo.html │ │ │ ├── type.NameLength.html │ │ │ ├── type.NativeInfo.html │ │ │ ├── type.NumNatives.html │ │ │ ├── type.NumPubVars.html │ │ │ ├── type.NumPublics.html │ │ │ ├── type.NumTags.html │ │ │ ├── type.Push.html │ │ │ ├── type.PushArray.html │ │ │ ├── type.PushString.html │ │ │ ├── type.RaiseError.html │ │ │ ├── type.Register.html │ │ │ ├── type.Release.html │ │ │ ├── type.SetCallback.html │ │ │ ├── type.SetDebugHook.html │ │ │ ├── type.SetString.html │ │ │ ├── type.SetUserData.html │ │ │ ├── type.StrLen.html │ │ │ ├── type.UTF8Check.html │ │ │ ├── type.UTF8Get.html │ │ │ ├── type.UTF8Len.html │ │ │ └── type.UTF8Put.html │ │ ├── index.html │ │ ├── sidebar-items.js │ │ └── types │ │ │ ├── AMX.t.html │ │ │ ├── AMX_FUNCSTUB.t.html │ │ │ ├── AMX_HEADER.t.html │ │ │ ├── AMX_NATIVE_INFO.t.html │ │ │ ├── ANX_FUNCSTUBNT.t.html │ │ │ ├── index.html │ │ │ ├── sidebar-items.js │ │ │ ├── struct.AMX.html │ │ │ ├── struct.AMX_FUNCSTUB.html │ │ │ ├── struct.AMX_HEADER.html │ │ │ ├── struct.AMX_NATIVE_INFO.html │ │ │ └── struct.ANX_FUNCSTUBNT.html │ └── sidebar-items.js ├── samp_codegen │ ├── all.html │ ├── attr.native.html │ ├── index.html │ ├── initialize_plugin.m.html │ ├── macro.initialize_plugin!.html │ ├── macro.initialize_plugin.html │ ├── native.m.html │ └── sidebar-items.js ├── samp_sdk │ ├── all.html │ ├── amx │ │ ├── Allocator.t.html │ │ ├── Amx.t.html │ │ ├── index.html │ │ ├── sidebar-items.js │ │ ├── struct.Allocator.html │ │ └── struct.Amx.html │ ├── args │ │ ├── Args.t.html │ │ ├── index.html │ │ ├── sidebar-items.js │ │ └── struct.Args.html │ ├── cell │ │ ├── Ref.t.html │ │ ├── buffer │ │ │ ├── Buffer.t.html │ │ │ ├── UnsizedBuffer.t.html │ │ │ ├── index.html │ │ │ ├── sidebar-items.js │ │ │ ├── struct.Buffer.html │ │ │ └── struct.UnsizedBuffer.html │ │ ├── index.html │ │ ├── repr │ │ │ ├── AmxCell.t.html │ │ │ ├── AmxPrimitive.t.html │ │ │ ├── index.html │ │ │ ├── sidebar-items.js │ │ │ ├── trait.AmxCell.html │ │ │ └── trait.AmxPrimitive.html │ │ ├── sidebar-items.js │ │ ├── string │ │ │ ├── AmxString.t.html │ │ │ ├── fn.put_in_buffer.html │ │ │ ├── index.html │ │ │ ├── put_in_buffer.v.html │ │ │ ├── sidebar-items.js │ │ │ └── struct.AmxString.html │ │ └── struct.Ref.html │ ├── consts │ │ ├── AmxExecIdx.t.html │ │ ├── AmxFlags.t.html │ │ ├── ServerData.t.html │ │ ├── Supports.t.html │ │ ├── enum.AmxExecIdx.html │ │ ├── enum.ServerData.html │ │ ├── index.html │ │ ├── sidebar-items.js │ │ ├── struct.AmxFlags.html │ │ └── struct.Supports.html │ ├── encoding │ │ ├── WINDOWS_1251.v.html │ │ ├── WINDOWS_1252.v.html │ │ ├── fn.set_default_encoding.html │ │ ├── index.html │ │ ├── set_default_encoding.v.html │ │ ├── sidebar-items.js │ │ ├── static.WINDOWS_1251.html │ │ └── static.WINDOWS_1252.html │ ├── error │ │ ├── AmxError.t.html │ │ ├── AmxResult.t.html │ │ ├── enum.AmxError.html │ │ ├── index.html │ │ ├── sidebar-items.js │ │ └── type.AmxResult.html │ ├── exec_public.m.html │ ├── exports │ │ ├── Align16.t.html │ │ ├── Align32.t.html │ │ ├── Allot.t.html │ │ ├── Callback.t.html │ │ ├── Cleanup.t.html │ │ ├── Clone.t.html │ │ ├── Exec.t.html │ │ ├── Export.t.html │ │ ├── Exports.t.html │ │ ├── FindNative.t.html │ │ ├── FindPubVar.t.html │ │ ├── FindPublic.t.html │ │ ├── FindTagId.t.html │ │ ├── Flags.t.html │ │ ├── GetAddr.t.html │ │ ├── GetNative.t.html │ │ ├── GetPubVar.t.html │ │ ├── GetPublic.t.html │ │ ├── GetString.t.html │ │ ├── GetTag.t.html │ │ ├── GetUserData.t.html │ │ ├── Init.t.html │ │ ├── InitJIT.t.html │ │ ├── MemInfo.t.html │ │ ├── NameLength.t.html │ │ ├── NativeInfo.t.html │ │ ├── NumNatives.t.html │ │ ├── NumPubVars.t.html │ │ ├── NumPublics.t.html │ │ ├── NumTags.t.html │ │ ├── Push.t.html │ │ ├── PushArray.t.html │ │ ├── PushString.t.html │ │ ├── RaiseError.t.html │ │ ├── Register.t.html │ │ ├── Release.t.html │ │ ├── SetCallback.t.html │ │ ├── SetDebugHook.t.html │ │ ├── SetString.t.html │ │ ├── SetUserData.t.html │ │ ├── StrLen.t.html │ │ ├── UTF8Check.t.html │ │ ├── UTF8Get.t.html │ │ ├── UTF8Len.t.html │ │ ├── UTF8Put.t.html │ │ ├── enum.Exports.html │ │ ├── index.html │ │ ├── sidebar-items.js │ │ ├── struct.Align16.html │ │ ├── struct.Align32.html │ │ ├── struct.Allot.html │ │ ├── struct.Callback.html │ │ ├── struct.Cleanup.html │ │ ├── struct.Clone.html │ │ ├── struct.Exec.html │ │ ├── struct.FindNative.html │ │ ├── struct.FindPubVar.html │ │ ├── struct.FindPublic.html │ │ ├── struct.FindTagId.html │ │ ├── struct.Flags.html │ │ ├── struct.GetAddr.html │ │ ├── struct.GetNative.html │ │ ├── struct.GetPubVar.html │ │ ├── struct.GetPublic.html │ │ ├── struct.GetString.html │ │ ├── struct.GetTag.html │ │ ├── struct.GetUserData.html │ │ ├── struct.Init.html │ │ ├── struct.InitJIT.html │ │ ├── struct.MemInfo.html │ │ ├── struct.NameLength.html │ │ ├── struct.NativeInfo.html │ │ ├── struct.NumNatives.html │ │ ├── struct.NumPubVars.html │ │ ├── struct.NumPublics.html │ │ ├── struct.NumTags.html │ │ ├── struct.Push.html │ │ ├── struct.PushArray.html │ │ ├── struct.PushString.html │ │ ├── struct.RaiseError.html │ │ ├── struct.Register.html │ │ ├── struct.Release.html │ │ ├── struct.SetCallback.html │ │ ├── struct.SetDebugHook.html │ │ ├── struct.SetString.html │ │ ├── struct.SetUserData.html │ │ ├── struct.StrLen.html │ │ ├── struct.UTF8Check.html │ │ ├── struct.UTF8Get.html │ │ ├── struct.UTF8Len.html │ │ ├── struct.UTF8Put.html │ │ └── trait.Export.html │ ├── index.html │ ├── macro.exec_public!.html │ ├── macro.exec_public.html │ ├── raw │ │ ├── functions │ │ │ ├── Align16.t.html │ │ │ ├── Align32.t.html │ │ │ ├── Allot.t.html │ │ │ ├── AmxCallback.t.html │ │ │ ├── AmxDebug.t.html │ │ │ ├── AmxNative.t.html │ │ │ ├── Callback.t.html │ │ │ ├── Cleanup.t.html │ │ │ ├── Clone.t.html │ │ │ ├── Exec.t.html │ │ │ ├── FindNative.t.html │ │ │ ├── FindPubVar.t.html │ │ │ ├── FindPublic.t.html │ │ │ ├── FindTagId.t.html │ │ │ ├── Flags.t.html │ │ │ ├── GetAddr.t.html │ │ │ ├── GetNative.t.html │ │ │ ├── GetPubVar.t.html │ │ │ ├── GetPublic.t.html │ │ │ ├── GetString.t.html │ │ │ ├── GetTag.t.html │ │ │ ├── GetUserData.t.html │ │ │ ├── Init.t.html │ │ │ ├── InitJIT.t.html │ │ │ ├── Logprintf.t.html │ │ │ ├── MemInfo.t.html │ │ │ ├── NameLength.t.html │ │ │ ├── NativeInfo.t.html │ │ │ ├── NumNatives.t.html │ │ │ ├── NumPubVars.t.html │ │ │ ├── NumPublics.t.html │ │ │ ├── NumTags.t.html │ │ │ ├── Push.t.html │ │ │ ├── PushArray.t.html │ │ │ ├── PushString.t.html │ │ │ ├── RaiseError.t.html │ │ │ ├── Register.t.html │ │ │ ├── Release.t.html │ │ │ ├── SetCallback.t.html │ │ │ ├── SetDebugHook.t.html │ │ │ ├── SetString.t.html │ │ │ ├── SetUserData.t.html │ │ │ ├── StrLen.t.html │ │ │ ├── UTF8Check.t.html │ │ │ ├── UTF8Get.t.html │ │ │ ├── UTF8Len.t.html │ │ │ ├── UTF8Put.t.html │ │ │ ├── index.html │ │ │ ├── sidebar-items.js │ │ │ ├── type.Align16.html │ │ │ ├── type.Align32.html │ │ │ ├── type.Allot.html │ │ │ ├── type.AmxCallback.html │ │ │ ├── type.AmxDebug.html │ │ │ ├── type.AmxNative.html │ │ │ ├── type.Callback.html │ │ │ ├── type.Cleanup.html │ │ │ ├── type.Clone.html │ │ │ ├── type.Exec.html │ │ │ ├── type.FindNative.html │ │ │ ├── type.FindPubVar.html │ │ │ ├── type.FindPublic.html │ │ │ ├── type.FindTagId.html │ │ │ ├── type.Flags.html │ │ │ ├── type.GetAddr.html │ │ │ ├── type.GetNative.html │ │ │ ├── type.GetPubVar.html │ │ │ ├── type.GetPublic.html │ │ │ ├── type.GetString.html │ │ │ ├── type.GetTag.html │ │ │ ├── type.GetUserData.html │ │ │ ├── type.Init.html │ │ │ ├── type.InitJIT.html │ │ │ ├── type.Logprintf.html │ │ │ ├── type.MemInfo.html │ │ │ ├── type.NameLength.html │ │ │ ├── type.NativeInfo.html │ │ │ ├── type.NumNatives.html │ │ │ ├── type.NumPubVars.html │ │ │ ├── type.NumPublics.html │ │ │ ├── type.NumTags.html │ │ │ ├── type.Push.html │ │ │ ├── type.PushArray.html │ │ │ ├── type.PushString.html │ │ │ ├── type.RaiseError.html │ │ │ ├── type.Register.html │ │ │ ├── type.Release.html │ │ │ ├── type.SetCallback.html │ │ │ ├── type.SetDebugHook.html │ │ │ ├── type.SetString.html │ │ │ ├── type.SetUserData.html │ │ │ ├── type.StrLen.html │ │ │ ├── type.UTF8Check.html │ │ │ ├── type.UTF8Get.html │ │ │ ├── type.UTF8Len.html │ │ │ └── type.UTF8Put.html │ │ ├── index.html │ │ ├── sidebar-items.js │ │ └── types │ │ │ ├── AMX.t.html │ │ │ ├── AMX_FUNCSTUB.t.html │ │ │ ├── AMX_HEADER.t.html │ │ │ ├── AMX_NATIVE_INFO.t.html │ │ │ ├── ANX_FUNCSTUBNT.t.html │ │ │ ├── index.html │ │ │ ├── sidebar-items.js │ │ │ ├── struct.AMX.html │ │ │ ├── struct.AMX_FUNCSTUB.html │ │ │ ├── struct.AMX_HEADER.html │ │ │ ├── struct.AMX_NATIVE_INFO.html │ │ │ └── struct.ANX_FUNCSTUBNT.html │ └── sidebar-items.js ├── search-index.js ├── settings.css ├── settings.html ├── settings.js ├── source-files.js ├── source-script.js ├── src │ ├── plugin │ │ └── lib.rs.html │ ├── samp │ │ ├── amx.rs.html │ │ ├── interlayer.rs.html │ │ ├── lib.rs.html │ │ ├── plugin.rs.html │ │ └── runtime.rs.html │ ├── samp_codegen │ │ ├── lib.rs.html │ │ ├── native.rs.html │ │ └── plugin.rs.html │ └── samp_sdk │ │ ├── amx.rs.html │ │ ├── args.rs.html │ │ ├── cell.rs.html │ │ ├── cell │ │ ├── buffer.rs.html │ │ ├── repr.rs.html │ │ └── string.rs.html │ │ ├── consts.rs.html │ │ ├── encoding.rs.html │ │ ├── error.rs.html │ │ ├── exports.rs.html │ │ ├── lib.rs.html │ │ ├── macros.rs.html │ │ ├── raw.rs.html │ │ └── raw │ │ ├── functions.rs.html │ │ └── types.rs.html ├── storage.js ├── theme.js └── wheel.svg ├── migration.md ├── plugin-example ├── Cargo.toml └── src │ └── lib.rs ├── readme.md ├── samp-codegen ├── Cargo.toml ├── readme.md └── src │ ├── lib.rs │ ├── native.rs │ └── plugin.rs ├── samp-sdk ├── Cargo.toml ├── readme.md └── src │ ├── amx.rs │ ├── args.rs │ ├── cell.rs │ ├── cell │ ├── buffer.rs │ ├── repr.rs │ └── string.rs │ ├── consts.rs │ ├── encoding.rs │ ├── error.rs │ ├── exports.rs │ ├── lib.rs │ ├── macros.rs │ ├── raw.rs │ └── raw │ ├── functions.rs │ └── types.rs └── samp ├── Cargo.toml └── src ├── amx.rs ├── interlayer.rs ├── lib.rs ├── plugin.rs └── runtime.rs /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | Cargo.lock 4 | .idea -------------------------------------------------------------------------------- /.rustfmt.toml: -------------------------------------------------------------------------------- 1 | fn_args_density = "Compressed" -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: rust 2 | rust: 3 | - stable-i686 4 | - beta-i686 5 | - nightly-i686 6 | 7 | addons: 8 | apt: 9 | update: true 10 | packages: &i686_unknown_linux_gnu 11 | - gcc-multilib 12 | 13 | script: 14 | - cargo build --verbose --all 15 | - cargo test --verbose --all -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = [ 3 | "samp-codegen", 4 | "samp-sdk", 5 | "samp", 6 | "plugin-example", 7 | ] -------------------------------------------------------------------------------- /docs/.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pycckue-Bnepeg/samp-rs/17ecb2f722bf0d74a98eb782745cd77e41c3c60a/docs/.lock -------------------------------------------------------------------------------- /docs/COPYRIGHT.txt: -------------------------------------------------------------------------------- 1 | These documentation pages include resources by third parties. This copyright 2 | file applies only to those resources. The following third party resources are 3 | included, and carry their own copyright notices and license terms: 4 | 5 | * Fira Sans (FiraSans-Regular.woff, FiraSans-Medium.woff): 6 | 7 | Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ 8 | with Reserved Font Name Fira Sans. 9 | 10 | Copyright (c) 2014, Telefonica S.A. 11 | 12 | Licensed under the SIL Open Font License, Version 1.1. 13 | See FiraSans-LICENSE.txt. 14 | 15 | * rustdoc.css, main.js, and playpen.js: 16 | 17 | Copyright 2015 The Rust Developers. 18 | Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE.txt) or 19 | the MIT license (LICENSE-MIT.txt) at your option. 20 | 21 | * normalize.css: 22 | 23 | Copyright (c) Nicolas Gallagher and Jonathan Neal. 24 | Licensed under the MIT license (see LICENSE-MIT.txt). 25 | 26 | * Source Code Pro (SourceCodePro-Regular.woff, SourceCodePro-Semibold.woff): 27 | 28 | Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), 29 | with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark 30 | of Adobe Systems Incorporated in the United States and/or other countries. 31 | 32 | Licensed under the SIL Open Font License, Version 1.1. 33 | See SourceCodePro-LICENSE.txt. 34 | 35 | * Source Serif Pro (SourceSerifPro-Regular.ttf.woff, 36 | SourceSerifPro-Bold.ttf.woff, SourceSerifPro-It.ttf.woff): 37 | 38 | Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/), with 39 | Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of 40 | Adobe Systems Incorporated in the United States and/or other countries. 41 | 42 | Licensed under the SIL Open Font License, Version 1.1. 43 | See SourceSerifPro-LICENSE.txt. 44 | 45 | This copyright file is intended to be distributed with rustdoc output. 46 | -------------------------------------------------------------------------------- /docs/FiraSans-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pycckue-Bnepeg/samp-rs/17ecb2f722bf0d74a98eb782745cd77e41c3c60a/docs/FiraSans-Medium.woff -------------------------------------------------------------------------------- /docs/FiraSans-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pycckue-Bnepeg/samp-rs/17ecb2f722bf0d74a98eb782745cd77e41c3c60a/docs/FiraSans-Regular.woff -------------------------------------------------------------------------------- /docs/LICENSE-MIT.txt: -------------------------------------------------------------------------------- 1 | Permission is hereby granted, free of charge, to any 2 | person obtaining a copy of this software and associated 3 | documentation files (the "Software"), to deal in the 4 | Software without restriction, including without 5 | limitation the rights to use, copy, modify, merge, 6 | publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software 8 | is furnished to do so, subject to the following 9 | conditions: 10 | 11 | The above copyright notice and this permission notice 12 | shall be included in all copies or substantial portions 13 | of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 16 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 17 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 18 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 19 | SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 22 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23 | DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /docs/SourceCodePro-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pycckue-Bnepeg/samp-rs/17ecb2f722bf0d74a98eb782745cd77e41c3c60a/docs/SourceCodePro-Regular.woff -------------------------------------------------------------------------------- /docs/SourceCodePro-Semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pycckue-Bnepeg/samp-rs/17ecb2f722bf0d74a98eb782745cd77e41c3c60a/docs/SourceCodePro-Semibold.woff -------------------------------------------------------------------------------- /docs/SourceSerifPro-Bold.ttf.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pycckue-Bnepeg/samp-rs/17ecb2f722bf0d74a98eb782745cd77e41c3c60a/docs/SourceSerifPro-Bold.ttf.woff -------------------------------------------------------------------------------- /docs/SourceSerifPro-It.ttf.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pycckue-Bnepeg/samp-rs/17ecb2f722bf0d74a98eb782745cd77e41c3c60a/docs/SourceSerifPro-It.ttf.woff -------------------------------------------------------------------------------- /docs/SourceSerifPro-Regular.ttf.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pycckue-Bnepeg/samp-rs/17ecb2f722bf0d74a98eb782745cd77e41c3c60a/docs/SourceSerifPro-Regular.ttf.woff -------------------------------------------------------------------------------- /docs/aliases.js: -------------------------------------------------------------------------------- 1 | var ALIASES = {}; 2 | ALIASES["plugin"] = {}; 3 | ALIASES["samp"] = {}; 4 | ALIASES["samp_codegen"] = {}; 5 | ALIASES["samp_sdk"] = {}; 6 | -------------------------------------------------------------------------------- /docs/brush.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/down-arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/implementors/core/clone/trait.Clone.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp"] = [{text:"impl Clone for AmxIdent",synthetic:false,types:["samp::amx::AmxIdent"]},]; 3 | implementors["samp_sdk"] = [{text:"impl Clone for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl Clone for ServerData",synthetic:false,types:["samp_sdk::consts::ServerData"]},{text:"impl Clone for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},{text:"impl Clone for AmxExecIdx",synthetic:false,types:["samp_sdk::consts::AmxExecIdx"]},{text:"impl Clone for Exports",synthetic:false,types:["samp_sdk::exports::Exports"]},]; 4 | 5 | if (window.register_implementors) { 6 | window.register_implementors(implementors); 7 | } else { 8 | window.pending_implementors = implementors; 9 | } 10 | 11 | })() 12 | -------------------------------------------------------------------------------- /docs/implementors/core/cmp/trait.Eq.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp"] = [{text:"impl Eq for AmxIdent",synthetic:false,types:["samp::amx::AmxIdent"]},]; 3 | implementors["samp_sdk"] = [{text:"impl Eq for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl Eq for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 4 | 5 | if (window.register_implementors) { 6 | window.register_implementors(implementors); 7 | } else { 8 | window.pending_implementors = implementors; 9 | } 10 | 11 | })() 12 | -------------------------------------------------------------------------------- /docs/implementors/core/cmp/trait.Ord.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl Ord for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl Ord for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/cmp/trait.PartialOrd.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl PartialOrd<Supports> for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl PartialOrd<AmxFlags> for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/fmt/trait.Binary.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl Binary for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl Binary for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/fmt/trait.Display.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl<'_> Display for AmxString<'_>",synthetic:false,types:["samp_sdk::cell::string::AmxString"]},{text:"impl Display for AmxError",synthetic:false,types:["samp_sdk::error::AmxError"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/fmt/trait.LowerHex.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl LowerHex for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl LowerHex for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/fmt/trait.Octal.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl Octal for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl Octal for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/fmt/trait.UpperHex.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl UpperHex for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl UpperHex for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/hash/trait.Hash.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp"] = [{text:"impl Hash for AmxIdent",synthetic:false,types:["samp::amx::AmxIdent"]},]; 3 | implementors["samp_sdk"] = [{text:"impl Hash for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl Hash for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 4 | 5 | if (window.register_implementors) { 6 | window.register_implementors(implementors); 7 | } else { 8 | window.pending_implementors = implementors; 9 | } 10 | 11 | })() 12 | -------------------------------------------------------------------------------- /docs/implementors/core/iter/traits/trait.Extend.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl Extend<Supports> for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl Extend<AmxFlags> for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/iter/traits/trait.FromIterator.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl FromIterator<Supports> for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl FromIterator<AmxFlags> for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/marker/trait.Copy.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp"] = [{text:"impl Copy for AmxIdent",synthetic:false,types:["samp::amx::AmxIdent"]},]; 3 | implementors["samp_sdk"] = [{text:"impl Copy for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl Copy for ServerData",synthetic:false,types:["samp_sdk::consts::ServerData"]},{text:"impl Copy for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},{text:"impl Copy for AmxExecIdx",synthetic:false,types:["samp_sdk::consts::AmxExecIdx"]},{text:"impl Copy for Exports",synthetic:false,types:["samp_sdk::exports::Exports"]},]; 4 | 5 | if (window.register_implementors) { 6 | window.register_implementors(implementors); 7 | } else { 8 | window.pending_implementors = implementors; 9 | } 10 | 11 | })() 12 | -------------------------------------------------------------------------------- /docs/implementors/core/ops/arith/trait.Sub.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl Sub<Supports> for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl Sub<AmxFlags> for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/ops/arith/trait.SubAssign.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl SubAssign<Supports> for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl SubAssign<AmxFlags> for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/ops/bit/trait.BitAnd.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl BitAnd<Supports> for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl BitAnd<AmxFlags> for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/ops/bit/trait.BitAndAssign.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl BitAndAssign<Supports> for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl BitAndAssign<AmxFlags> for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/ops/bit/trait.BitOr.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl BitOr<Supports> for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl BitOr<AmxFlags> for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/ops/bit/trait.BitOrAssign.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl BitOrAssign<Supports> for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl BitOrAssign<AmxFlags> for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/ops/bit/trait.BitXor.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl BitXor<Supports> for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl BitXor<AmxFlags> for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/ops/bit/trait.BitXorAssign.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl BitXorAssign<Supports> for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl BitXorAssign<AmxFlags> for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/ops/bit/trait.Not.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl Not for Supports",synthetic:false,types:["samp_sdk::consts::Supports"]},{text:"impl Not for AmxFlags",synthetic:false,types:["samp_sdk::consts::AmxFlags"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/ops/deref/trait.Deref.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl<'_> Deref for Buffer<'_>",synthetic:false,types:["samp_sdk::cell::buffer::Buffer"]},{text:"impl<T: Sized + AmxPrimitive, '_> Deref for Ref<'_, T>",synthetic:false,types:["samp_sdk::cell::Ref"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/ops/deref/trait.DerefMut.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl<'_> DerefMut for Buffer<'_>",synthetic:false,types:["samp_sdk::cell::buffer::Buffer"]},{text:"impl<T: Sized + AmxPrimitive, '_> DerefMut for Ref<'_, T>",synthetic:false,types:["samp_sdk::cell::Ref"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/core/ops/drop/trait.Drop.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl<'_> Drop for Allocator<'_>",synthetic:false,types:["samp_sdk::amx::Allocator"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/samp/amx/trait.AmxExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/samp/cell/repr/trait.AmxPrimitive.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/samp/exports/trait.Export.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/samp/prelude/trait.AmxCell.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/samp_sdk/cell/repr/trait.AmxCell.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/samp_sdk/cell/repr/trait.AmxPrimitive.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/samp_sdk/exports/trait.Export.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/implementors/std/error/trait.Error.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["samp_sdk"] = [{text:"impl Error for AmxError",synthetic:false,types:["samp_sdk::error::AmxError"]},]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/normalize.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v3.0.0 | MIT License | git.io/normalize */ 2 | html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0} -------------------------------------------------------------------------------- /docs/noscript.css: -------------------------------------------------------------------------------- 1 | #main>h2+div,#main>h2+h3,#main>h3+div{display:block;}.loading-content{display:none;} -------------------------------------------------------------------------------- /docs/plugin/AmxLoad.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.AmxLoad.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/plugin/AmxUnload.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.AmxUnload.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/plugin/Load.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.Load.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/plugin/Supports.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.Supports.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/plugin/Unload.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.Unload.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/plugin/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"fn":[["AmxLoad",""],["AmxUnload",""],["Load",""],["Supports",""],["Unload",""]]}); -------------------------------------------------------------------------------- /docs/samp/amx/Allocator.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Allocator.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/amx/Amx.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Amx.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/amx/AmxExt.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.AmxExt.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/amx/AmxIdent.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AmxIdent.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/amx/get.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.get.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/amx/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"fn":[["get","Get a reference to an `Amx` by given `AmxIdent`."]],"struct":[["Allocator","AMX memory allocator (on the heap) that frees captured memory after drop."],["Amx","A wrapper around a raw pointer to an AMX and exported functions."],["AmxIdent","An unique identifier of an `Amx` instance."]],"trait":[["AmxExt","Extended functional of an `Amx`."]]}); -------------------------------------------------------------------------------- /docs/samp/args/Args.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Args.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/args/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"struct":[["Args","A wrapper of a list of arguments of a native function."]]}); -------------------------------------------------------------------------------- /docs/samp/cell/Ref.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Ref.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/cell/buffer/Buffer.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Buffer.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/cell/buffer/UnsizedBuffer.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.UnsizedBuffer.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/cell/buffer/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"struct":[["Buffer","Contains a pointer to sequence of `Amx` cells."],["UnsizedBuffer","It's more like a temorary buffer that comes from AMX when a native is calling."]]}); -------------------------------------------------------------------------------- /docs/samp/cell/repr/AmxCell.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.AmxCell.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/cell/repr/AmxPrimitive.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.AmxPrimitive.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/cell/repr/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"trait":[["AmxCell","AmxCell trait is a core trait of whole SDK. It shows that value can be borrowed (or copied if it's a primitive) from AMX and passed to it."],["AmxPrimitive","A marker showing that a value can be stored directly on a stack or a heap of an AMX."]]}); -------------------------------------------------------------------------------- /docs/samp/cell/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"mod":[["buffer","Contains types to interact with AMX arrays."],["repr","A module to discribe how AMX cells work."],["string","String interperation inside an AMX."]],"struct":[["Ref","A reference to a cell in the [`Amx`]."]]}); -------------------------------------------------------------------------------- /docs/samp/cell/string/AmxString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AmxString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/cell/string/put_in_buffer.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.put_in_buffer.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/cell/string/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"fn":[["put_in_buffer","Fill a buffer with given string."]],"struct":[["AmxString",""]]}); -------------------------------------------------------------------------------- /docs/samp/consts/AmxExecIdx.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.AmxExecIdx.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/consts/AmxFlags.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AmxFlags.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/consts/ServerData.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.ServerData.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/consts/Supports.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Supports.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/consts/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"enum":[["AmxExecIdx","Index of an AMX function in memory."],["ServerData","Offsets"]],"struct":[["AmxFlags",""],["Supports",""]]}); -------------------------------------------------------------------------------- /docs/samp/encoding/WINDOWS_1251.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to static.WINDOWS_1251.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/encoding/WINDOWS_1252.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to static.WINDOWS_1252.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/encoding/set_default_encoding.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.set_default_encoding.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/encoding/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"fn":[["set_default_encoding",""]],"static":[["WINDOWS_1251","The windows-1251 encoding."],["WINDOWS_1252","The windows-1252 encoding."]]}); -------------------------------------------------------------------------------- /docs/samp/error/AmxError.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.AmxError.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/error/AmxResult.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.AmxResult.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/error/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"enum":[["AmxError","Error type returned by AMX functions (origin amx_*)."]],"type":[["AmxResult","A specialized [`Result`] type for operations on AMX."]]}); -------------------------------------------------------------------------------- /docs/samp/exec_public.m.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to macro.exec_public.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Align16.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Align16.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Align32.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Align32.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Allot.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Allot.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Callback.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Callback.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Cleanup.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Cleanup.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Clone.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Clone.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Exec.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Exec.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Export.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Export.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Exports.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.Exports.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/FindNative.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.FindNative.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/FindPubVar.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.FindPubVar.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/FindPublic.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.FindPublic.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/FindTagId.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.FindTagId.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Flags.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Flags.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/GetAddr.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetAddr.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/GetNative.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetNative.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/GetPubVar.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetPubVar.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/GetPublic.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetPublic.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/GetString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/GetTag.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetTag.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/GetUserData.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetUserData.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Init.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Init.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/InitJIT.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.InitJIT.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/MemInfo.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.MemInfo.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/NameLength.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.NameLength.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/NativeInfo.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.NativeInfo.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/NumNatives.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.NumNatives.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/NumPubVars.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.NumPubVars.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/NumPublics.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.NumPublics.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/NumTags.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.NumTags.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Push.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Push.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/PushArray.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.PushArray.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/PushString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.PushString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/RaiseError.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.RaiseError.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Register.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Register.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/Release.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Release.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/SetCallback.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.SetCallback.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/SetDebugHook.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.SetDebugHook.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/SetString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.SetString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/SetUserData.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.SetUserData.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/StrLen.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.StrLen.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/UTF8Check.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.UTF8Check.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/UTF8Get.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.UTF8Get.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/UTF8Len.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.UTF8Len.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/UTF8Put.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.UTF8Put.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/exports/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"enum":[["Exports","List of `amx_*` functions exported via the extern `Load` function."]],"struct":[["Align16",""],["Align32",""],["Allot",""],["Callback",""],["Cleanup",""],["Clone",""],["Exec",""],["FindNative",""],["FindPubVar",""],["FindPublic",""],["FindTagId",""],["Flags",""],["GetAddr",""],["GetNative",""],["GetPubVar",""],["GetPublic",""],["GetString",""],["GetTag",""],["GetUserData",""],["Init",""],["InitJIT",""],["MemInfo",""],["NameLength",""],["NativeInfo",""],["NumNatives",""],["NumPubVars",""],["NumPublics",""],["NumTags",""],["Push",""],["PushArray",""],["PushString",""],["RaiseError",""],["Register",""],["Release",""],["SetCallback",""],["SetDebugHook",""],["SetString",""],["SetUserData",""],["StrLen",""],["UTF8Check",""],["UTF8Get",""],["UTF8Len",""],["UTF8Put",""]],"trait":[["Export",""]]}); -------------------------------------------------------------------------------- /docs/samp/macro.exec_public!.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to macro.exec_public.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/plugin/SampPlugin.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.SampPlugin.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/plugin/enable_process_tick.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.enable_process_tick.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/plugin/logger.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.logger.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/plugin/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"fn":[["enable_process_tick","Enables process_tick function for a plugin."],["logger","Get a fern [`Dispatch`] and disable auto installing logger."]],"trait":[["SampPlugin","An interface that should be implemented by any plugin."]]}); -------------------------------------------------------------------------------- /docs/samp/prelude/Amx.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Amx.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/prelude/AmxCell.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.AmxCell.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/prelude/AmxResult.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.AmxResult.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/prelude/AmxString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AmxString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/prelude/Buffer.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Buffer.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/prelude/Ref.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Ref.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/prelude/UnsizedBuffer.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.UnsizedBuffer.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/prelude/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"struct":[["Amx","A wrapper around a raw pointer to an AMX and exported functions."],["AmxString",""],["Buffer","Contains a pointer to sequence of `Amx` cells."],["Ref","A reference to a cell in the [`Amx`]."],["UnsizedBuffer","It's more like a temorary buffer that comes from AMX when a native is calling."]],"trait":[["AmxCell","AmxCell trait is a core trait of whole SDK. It shows that value can be borrowed (or copied if it's a primitive) from AMX and passed to it."]],"type":[["AmxResult","A specialized [`Result`] type for operations on AMX."]]}); -------------------------------------------------------------------------------- /docs/samp/raw/functions/Align16.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Align16.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/Align32.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Align32.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/Allot.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Allot.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/AmxCallback.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.AmxCallback.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/AmxDebug.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.AmxDebug.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/AmxNative.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.AmxNative.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/Callback.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Callback.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/Cleanup.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Cleanup.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/Clone.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Clone.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/Exec.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Exec.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/FindNative.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.FindNative.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/FindPubVar.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.FindPubVar.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/FindPublic.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.FindPublic.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/FindTagId.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.FindTagId.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/Flags.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Flags.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/GetAddr.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetAddr.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/GetNative.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetNative.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/GetPubVar.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetPubVar.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/GetPublic.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetPublic.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/GetString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/GetTag.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetTag.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/GetUserData.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetUserData.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/Init.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Init.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/InitJIT.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.InitJIT.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/Logprintf.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Logprintf.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/MemInfo.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.MemInfo.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/NameLength.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.NameLength.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/NativeInfo.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.NativeInfo.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/NumNatives.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.NumNatives.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/NumPubVars.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.NumPubVars.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/NumPublics.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.NumPublics.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/NumTags.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.NumTags.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/Push.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Push.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/PushArray.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.PushArray.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/PushString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.PushString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/RaiseError.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.RaiseError.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/Register.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Register.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/Release.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Release.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/SetCallback.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.SetCallback.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/SetDebugHook.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.SetDebugHook.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/SetString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.SetString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/SetUserData.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.SetUserData.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/StrLen.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.StrLen.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/UTF8Check.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.UTF8Check.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/UTF8Get.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.UTF8Get.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/UTF8Len.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.UTF8Len.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/UTF8Put.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.UTF8Put.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/functions/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"type":[["Align16",""],["Align32",""],["Allot",""],["AmxCallback",""],["AmxDebug",""],["AmxNative",""],["Callback",""],["Cleanup",""],["Clone",""],["Exec",""],["FindNative",""],["FindPubVar",""],["FindPublic",""],["FindTagId",""],["Flags",""],["GetAddr",""],["GetNative",""],["GetPubVar",""],["GetPublic",""],["GetString",""],["GetTag",""],["GetUserData",""],["Init",""],["InitJIT",""],["Logprintf",""],["MemInfo",""],["NameLength",""],["NativeInfo",""],["NumNatives",""],["NumPubVars",""],["NumPublics",""],["NumTags",""],["Push",""],["PushArray",""],["PushString",""],["RaiseError",""],["Register",""],["Release",""],["SetCallback",""],["SetDebugHook",""],["SetString",""],["SetUserData",""],["StrLen",""],["UTF8Check",""],["UTF8Get",""],["UTF8Len",""],["UTF8Put",""]]}); -------------------------------------------------------------------------------- /docs/samp/raw/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"mod":[["functions",""],["types",""]]}); -------------------------------------------------------------------------------- /docs/samp/raw/types/AMX.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AMX.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/types/AMX_FUNCSTUB.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AMX_FUNCSTUB.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/types/AMX_HEADER.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AMX_HEADER.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/types/AMX_NATIVE_INFO.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AMX_NATIVE_INFO.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/types/ANX_FUNCSTUBNT.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.ANX_FUNCSTUBNT.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp/raw/types/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"struct":[["AMX",""],["AMX_FUNCSTUB",""],["AMX_HEADER",""],["AMX_NATIVE_INFO",""],["ANX_FUNCSTUBNT",""]]}); -------------------------------------------------------------------------------- /docs/samp/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"macro":[["exec_public","Execute a public AMX function by name."]],"mod":[["amx","Core Amx types with additional functions."],["args","Workaround to parse input of natives functions."],["cell","Different smart-pointers to work around raw AMX values."],["consts","Default AMX constants."],["encoding","String encoding."],["error","Work with AMX errors."],["exports","Types to get exported functions by AMX."],["plugin","Contains a plugin interface."],["prelude","Most used imports."],["raw","Raw C definitions of AMX sturcture."]]}); -------------------------------------------------------------------------------- /docs/samp_codegen/initialize_plugin.m.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to macro.initialize_plugin.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_codegen/macro.initialize_plugin!.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to macro.initialize_plugin.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_codegen/native.m.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to attr.native.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_codegen/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"attr":[["native","Generate C function that parses passed argument and calls current function."]],"macro":[["initialize_plugin","Generates common plugin C interface."]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/amx/Allocator.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Allocator.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/amx/Amx.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Amx.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/amx/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"struct":[["Allocator","AMX memory allocator (on the heap) that frees captured memory after drop."],["Amx","A wrapper around a raw pointer to an AMX and exported functions."]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/args/Args.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Args.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/args/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"struct":[["Args","A wrapper of a list of arguments of a native function."]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/cell/Ref.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Ref.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/cell/buffer/Buffer.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Buffer.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/cell/buffer/UnsizedBuffer.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.UnsizedBuffer.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/cell/buffer/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"struct":[["Buffer","Contains a pointer to sequence of `Amx` cells."],["UnsizedBuffer","It's more like a temorary buffer that comes from AMX when a native is calling."]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/cell/repr/AmxCell.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.AmxCell.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/cell/repr/AmxPrimitive.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.AmxPrimitive.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/cell/repr/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"trait":[["AmxCell","AmxCell trait is a core trait of whole SDK. It shows that value can be borrowed (or copied if it's a primitive) from AMX and passed to it."],["AmxPrimitive","A marker showing that a value can be stored directly on a stack or a heap of an AMX."]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/cell/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"mod":[["buffer","Contains types to interact with AMX arrays."],["repr","A module to discribe how AMX cells work."],["string","String interperation inside an AMX."]],"struct":[["Ref","A reference to a cell in the [`Amx`]."]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/cell/string/AmxString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AmxString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/cell/string/put_in_buffer.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.put_in_buffer.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/cell/string/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"fn":[["put_in_buffer","Fill a buffer with given string."]],"struct":[["AmxString",""]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/consts/AmxExecIdx.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.AmxExecIdx.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/consts/AmxFlags.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AmxFlags.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/consts/ServerData.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.ServerData.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/consts/Supports.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Supports.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/consts/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"enum":[["AmxExecIdx","Index of an AMX function in memory."],["ServerData","Offsets"]],"struct":[["AmxFlags",""],["Supports",""]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/encoding/WINDOWS_1251.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to static.WINDOWS_1251.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/encoding/WINDOWS_1252.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to static.WINDOWS_1252.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/encoding/set_default_encoding.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.set_default_encoding.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/encoding/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"fn":[["set_default_encoding",""]],"static":[["WINDOWS_1251","The windows-1251 encoding."],["WINDOWS_1252","The windows-1252 encoding."]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/error/AmxError.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.AmxError.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/error/AmxResult.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.AmxResult.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/error/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"enum":[["AmxError","Error type returned by AMX functions (origin amx_*)."]],"type":[["AmxResult","A specialized [`Result`] type for operations on AMX."]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/exec_public.m.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to macro.exec_public.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Align16.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Align16.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Align32.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Align32.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Allot.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Allot.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Callback.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Callback.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Cleanup.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Cleanup.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Clone.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Clone.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Exec.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Exec.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Export.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Export.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Exports.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.Exports.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/FindNative.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.FindNative.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/FindPubVar.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.FindPubVar.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/FindPublic.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.FindPublic.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/FindTagId.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.FindTagId.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Flags.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Flags.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/GetAddr.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetAddr.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/GetNative.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetNative.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/GetPubVar.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetPubVar.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/GetPublic.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetPublic.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/GetString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/GetTag.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetTag.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/GetUserData.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.GetUserData.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Init.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Init.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/InitJIT.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.InitJIT.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/MemInfo.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.MemInfo.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/NameLength.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.NameLength.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/NativeInfo.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.NativeInfo.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/NumNatives.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.NumNatives.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/NumPubVars.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.NumPubVars.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/NumPublics.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.NumPublics.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/NumTags.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.NumTags.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Push.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Push.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/PushArray.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.PushArray.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/PushString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.PushString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/RaiseError.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.RaiseError.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Register.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Register.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/Release.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Release.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/SetCallback.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.SetCallback.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/SetDebugHook.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.SetDebugHook.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/SetString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.SetString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/SetUserData.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.SetUserData.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/StrLen.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.StrLen.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/UTF8Check.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.UTF8Check.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/UTF8Get.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.UTF8Get.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/UTF8Len.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.UTF8Len.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/UTF8Put.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.UTF8Put.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/exports/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"enum":[["Exports","List of `amx_*` functions exported via the extern `Load` function."]],"struct":[["Align16",""],["Align32",""],["Allot",""],["Callback",""],["Cleanup",""],["Clone",""],["Exec",""],["FindNative",""],["FindPubVar",""],["FindPublic",""],["FindTagId",""],["Flags",""],["GetAddr",""],["GetNative",""],["GetPubVar",""],["GetPublic",""],["GetString",""],["GetTag",""],["GetUserData",""],["Init",""],["InitJIT",""],["MemInfo",""],["NameLength",""],["NativeInfo",""],["NumNatives",""],["NumPubVars",""],["NumPublics",""],["NumTags",""],["Push",""],["PushArray",""],["PushString",""],["RaiseError",""],["Register",""],["Release",""],["SetCallback",""],["SetDebugHook",""],["SetString",""],["SetUserData",""],["StrLen",""],["UTF8Check",""],["UTF8Get",""],["UTF8Len",""],["UTF8Put",""]],"trait":[["Export",""]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/macro.exec_public!.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to macro.exec_public.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/Align16.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Align16.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/Align32.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Align32.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/Allot.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Allot.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/AmxCallback.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.AmxCallback.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/AmxDebug.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.AmxDebug.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/AmxNative.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.AmxNative.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/Callback.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Callback.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/Cleanup.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Cleanup.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/Clone.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Clone.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/Exec.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Exec.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/FindNative.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.FindNative.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/FindPubVar.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.FindPubVar.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/FindPublic.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.FindPublic.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/FindTagId.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.FindTagId.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/Flags.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Flags.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/GetAddr.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetAddr.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/GetNative.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetNative.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/GetPubVar.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetPubVar.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/GetPublic.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetPublic.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/GetString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/GetTag.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetTag.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/GetUserData.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.GetUserData.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/Init.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Init.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/InitJIT.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.InitJIT.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/Logprintf.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Logprintf.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/MemInfo.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.MemInfo.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/NameLength.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.NameLength.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/NativeInfo.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.NativeInfo.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/NumNatives.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.NumNatives.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/NumPubVars.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.NumPubVars.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/NumPublics.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.NumPublics.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/NumTags.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.NumTags.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/Push.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Push.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/PushArray.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.PushArray.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/PushString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.PushString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/RaiseError.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.RaiseError.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/Register.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Register.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/Release.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.Release.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/SetCallback.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.SetCallback.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/SetDebugHook.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.SetDebugHook.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/SetString.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.SetString.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/SetUserData.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.SetUserData.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/StrLen.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.StrLen.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/UTF8Check.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.UTF8Check.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/UTF8Get.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.UTF8Get.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/UTF8Len.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.UTF8Len.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/UTF8Put.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.UTF8Put.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/functions/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"type":[["Align16",""],["Align32",""],["Allot",""],["AmxCallback",""],["AmxDebug",""],["AmxNative",""],["Callback",""],["Cleanup",""],["Clone",""],["Exec",""],["FindNative",""],["FindPubVar",""],["FindPublic",""],["FindTagId",""],["Flags",""],["GetAddr",""],["GetNative",""],["GetPubVar",""],["GetPublic",""],["GetString",""],["GetTag",""],["GetUserData",""],["Init",""],["InitJIT",""],["Logprintf",""],["MemInfo",""],["NameLength",""],["NativeInfo",""],["NumNatives",""],["NumPubVars",""],["NumPublics",""],["NumTags",""],["Push",""],["PushArray",""],["PushString",""],["RaiseError",""],["Register",""],["Release",""],["SetCallback",""],["SetDebugHook",""],["SetString",""],["SetUserData",""],["StrLen",""],["UTF8Check",""],["UTF8Get",""],["UTF8Len",""],["UTF8Put",""]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/raw/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"mod":[["functions",""],["types",""]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/raw/types/AMX.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AMX.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/types/AMX_FUNCSTUB.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AMX_FUNCSTUB.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/types/AMX_HEADER.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AMX_HEADER.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/types/AMX_NATIVE_INFO.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.AMX_NATIVE_INFO.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/types/ANX_FUNCSTUBNT.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.ANX_FUNCSTUBNT.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/samp_sdk/raw/types/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"struct":[["AMX",""],["AMX_FUNCSTUB",""],["AMX_HEADER",""],["AMX_NATIVE_INFO",""],["ANX_FUNCSTUBNT",""]]}); -------------------------------------------------------------------------------- /docs/samp_sdk/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"macro":[["exec_public","Execute a public AMX function by name."]],"mod":[["amx","Core Amx types."],["args","Workaround to parse input of natives functions."],["cell","Different smart-pointers to work around raw AMX values."],["consts","Default AMX constants."],["encoding","String encoding."],["error","Work with AMX errors."],["exports","Types to get exported functions by AMX."],["raw","Raw C definitions of AMX sturcture."]]}); -------------------------------------------------------------------------------- /docs/settings.css: -------------------------------------------------------------------------------- 1 | .setting-line{padding:5px;}.setting-line>div{max-width:calc(100% - 74px);display:inline-block;vertical-align:top;font-size:17px;padding-top:2px;}.toggle{position:relative;display:inline-block;width:45px;height:27px;margin-right:20px;}.toggle input{display:none;}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.3s;transition:.3s;}.slider:before{position:absolute;content:"";height:19px;width:19px;left:4px;bottom:4px;background-color:white;-webkit-transition:.3s;transition:.3s;}input:checked+.slider{background-color:#2196F3;}input:focus+.slider{box-shadow:0 0 1px #2196F3;}input:checked+.slider:before{-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px);} -------------------------------------------------------------------------------- /docs/settings.js: -------------------------------------------------------------------------------- 1 | (function(){function changeSetting(settingName,isEnabled){updateLocalStorage('rustdoc-'+settingName,isEnabled);}function getSettingValue(settingName){return getCurrentValue('rustdoc-'+settingName);}function setEvents(){var elems=document.getElementsByClassName("slider");if(!elems||elems.length===0){return;}for(var i=0;i0&&func){var length=arr.length;if(reversed!==true){for(var i=0;i=0;--i){if(func(arr[i])===true){return true;}}}}return false;}function onEachLazy(lazyArray,func,reversed){return onEach(Array.prototype.slice.call(lazyArray),func,reversed);}function usableLocalStorage(){if(typeof(Storage)==="undefined"){return false;}try{window.localStorage;}catch(err){return false;}return true;}function updateLocalStorage(name,value){if(usableLocalStorage()){localStorage[name]=value;}else{}}function getCurrentValue(name){if(usableLocalStorage()&&localStorage[name]!==undefined){return localStorage[name];}return null;}function switchTheme(styleElem,mainStyleElem,newTheme){var fullBasicCss="rustdoc"+resourcesSuffix+".css";var fullNewTheme=newTheme+resourcesSuffix+".css";var newHref=mainStyleElem.href.replace(fullBasicCss,fullNewTheme);if(styleElem.href===newHref){return;}var found=false;if(savedHref.length===0){onEachLazy(document.getElementsByTagName("link"),function(el){savedHref.push(el.href);});}onEach(savedHref,function(el){if(el===newHref){found=true;return true;}});if(found===true){styleElem.href=newHref;updateLocalStorage("rustdoc-theme",newTheme);}}switchTheme(currentTheme,mainTheme,getCurrentValue("rustdoc-theme")||"light"); -------------------------------------------------------------------------------- /docs/theme.js: -------------------------------------------------------------------------------- 1 | var themes = document.getElementById("theme-choices"); 2 | var themePicker = document.getElementById("theme-picker"); 3 | 4 | function switchThemeButtonState() { 5 | if (themes.style.display === "block") { 6 | themes.style.display = "none"; 7 | themePicker.style.borderBottomRightRadius = "3px"; 8 | themePicker.style.borderBottomLeftRadius = "3px"; 9 | } else { 10 | themes.style.display = "block"; 11 | themePicker.style.borderBottomRightRadius = "0"; 12 | themePicker.style.borderBottomLeftRadius = "0"; 13 | } 14 | }; 15 | 16 | function handleThemeButtonsBlur(e) { 17 | var active = document.activeElement; 18 | var related = e.relatedTarget; 19 | 20 | if (active.id !== "themePicker" && 21 | (!active.parentNode || active.parentNode.id !== "theme-choices") && 22 | (!related || 23 | (related.id !== "themePicker" && 24 | (!related.parentNode || related.parentNode.id !== "theme-choices")))) { 25 | switchThemeButtonState(); 26 | } 27 | } 28 | 29 | themePicker.onclick = switchThemeButtonState; 30 | themePicker.onblur = handleThemeButtonsBlur; 31 | ["dark","light"].forEach(function(item) { 32 | var but = document.createElement('button'); 33 | but.innerHTML = item; 34 | but.onclick = function(el) { 35 | switchTheme(currentTheme, mainTheme, item); 36 | }; 37 | but.onblur = handleThemeButtonsBlur; 38 | themes.appendChild(but); 39 | }); -------------------------------------------------------------------------------- /migration.md: -------------------------------------------------------------------------------- 1 | # what's new 2 | * replace a `new_plugin!` decl macro with a `initialize_plugin!` proc macro. 3 | * replace a `define_native!` decl macro with a `#[native]` attribute. 4 | * new `AmxCell` trait that allows convert Rust types to AMX types. 5 | 6 | # migration guide 7 | * change `samp_sdk = "*"` in `Cargo.toml` to `samp = "0.1.0"`. 8 | * export the prelude module `use samp::prelude::*`. 9 | * remove `new_plugin!` call to `initialize_plugin!` 10 | * delete all `define_native!` calls. 11 | 12 | ### your old code 13 | ```rust 14 | use samp_sdk::new_plugin; 15 | use samp_sdk::...; 16 | 17 | // native definitions 18 | define_native!(my_native, string: String); 19 | define_native!(raw_native as raw); 20 | 21 | pub struct Plugin { 22 | <.. code ..> 23 | } 24 | 25 | impl Plugin { 26 | fn load(&self) { 27 | let natives = natives! { 28 | "MyNative" => my_native, 29 | "RawNative" => raw_native 30 | }; 31 | 32 | amx.register(&natives); 33 | 34 | <.. code ..> 35 | } 36 | 37 | fn unload(&self) { 38 | <.. code ..> 39 | } 40 | 41 | fn my_native(&self, amx: &AMX, string: String) -> AmxResult { 42 | <.. code ..> 43 | } 44 | 45 | fn raw_native(&self, amx: &AMX, args: *mut Cell) -> AmxResult { 46 | <.. code ..> 47 | } 48 | } 49 | 50 | impl Default for Plugin { 51 | fn default() -> Plugin { 52 | Plugin { 53 | <.. code ..> 54 | } 55 | } 56 | } 57 | 58 | new_plugin!(Plugin); 59 | ``` 60 | ### your new code 61 | ```rust 62 | use samp::prelude::*; 63 | use samp::args::Args; 64 | 65 | struct Plugin { 66 | <.. code ..> 67 | } 68 | 69 | impl Plugin { 70 | #[native(name = "MyNative")] 71 | fn my_native(&mut self, amx: &Amx, string: AmxString) -> AmxResult { 72 | let string = string.to_string(); // convert AmxString to rust String 73 | <.. code ..> 74 | } 75 | 76 | #[native(name = "RawNative", raw)] 77 | fn raw_native(&mut self, amx: &Amx, args: Args) -> AmxResult { 78 | <.. code ..> 79 | } 80 | } 81 | 82 | impl SampPlugin for Plugin { 83 | fn on_load(&mut self) { 84 | // no more calls to Amx::register. 85 | <.. code ..> 86 | } 87 | 88 | fn on_unload(&mut self) { 89 | <.. code ..> 90 | } 91 | } 92 | 93 | initialize_plugin!( 94 | natives: [ 95 | Plugin::my_native, 96 | Plugin::raw_native, 97 | ], 98 | { 99 | let plugin = Plugin { 100 | <.. code ..> 101 | }; 102 | 103 | return plugin; 104 | } 105 | ); 106 | ``` -------------------------------------------------------------------------------- /plugin-example/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "plugin" 3 | version = "0.1.0" 4 | authors = ["ZOTTCE "] 5 | edition = "2018" 6 | publish = false 7 | 8 | [lib] 9 | crate-type = ["cdylib"] 10 | 11 | [dependencies] 12 | samp = { path = "../samp", features = ["encoding"] } 13 | memcache = "0.12" 14 | log = "0.4.6" 15 | fern = "0.5.7" -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | [![Docs](https://docs.rs/samp/badge.svg)](https://docs.rs/samp) 2 | [![Crates](https://img.shields.io/crates/v/samp.svg)](https://crates.io/crates/samp) 3 | # samp-rs 4 | samp-rs is a tool to develop plugins for [samp](http://sa-mp.com) servers written in rust. 5 | 6 | # documentation 7 | it's [here](https://zottce.github.io/samp-rs/samp/index.html)! need to find a way to fix docs.rs ... 8 | 9 | # project structure 10 | * `samp` is a glue between crates described below (that's what you need). 11 | * `samp-codegen` generates raw `extern "C"` functions and does whole nasty job. 12 | * `samp-sdk` contains all types to work with amx. 13 | 14 | # usage 15 | * [install](https://rustup.rs) rust compiler (supports only `i686` os versions because of samp server arch). 16 | * add in your `Cargo.toml` this: 17 | ```toml 18 | [lib] 19 | crate-type = ["cdylib"] # or dylib 20 | 21 | [dependencies] 22 | samp = "0.1.2" 23 | ``` 24 | * write your first plugin 25 | 26 | # migration from old versions 27 | * check out [the guide](migration.md) 28 | 29 | # examples 30 | * simple memcache plugin in `plugin-example` folder. 31 | * your `lib.rs` file 32 | ```rust 33 | use samp::prelude::*; // export most useful types 34 | use samp::{native, initialize_plugin}; // codegen macros 35 | 36 | struct Plugin; 37 | 38 | impl SampPlugin for Plugin { 39 | // this function executed when samp server loads your plugin 40 | fn on_load(&mut self) { 41 | println!("Plugin is loaded."); 42 | } 43 | } 44 | 45 | impl Plugin { 46 | #[native(name = "TestNative")] 47 | fn my_native(&mut self, _amx: &Amx, text: AmxString) -> AmxResult { 48 | let text = text.to_string(); // convert amx string into rust string 49 | println!("rust plugin: {}", text); 50 | 51 | Ok(true) 52 | } 53 | } 54 | 55 | initialize_plugin!( 56 | natives: [Plugin::my_native], 57 | { 58 | let plugin = Plugin; // create a plugin object 59 | return plugin; // return the plugin into runtime 60 | } 61 | ) 62 | ``` -------------------------------------------------------------------------------- /samp-codegen/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "samp-codegen" 3 | version = "0.1.2" 4 | authors = ["ZOTTCE "] 5 | description = "Codegen for samp-rs" 6 | license = "MIT" 7 | repository = "https://github.com/zottce/samp-rs/" 8 | readme = "readme.md" 9 | edition = "2018" 10 | 11 | [lib] 12 | proc-macro = true 13 | 14 | [dependencies] 15 | proc-macro2 = { version = "0.4", features = ["nightly"] } 16 | syn = { version = "0.15", features = ["full", "fold"] } 17 | quote = "0.6" 18 | -------------------------------------------------------------------------------- /samp-codegen/readme.md: -------------------------------------------------------------------------------- 1 | # samp-codegen 2 | generates samp C functions to communicate with samp server -------------------------------------------------------------------------------- /samp-codegen/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![recursion_limit = "128"] 2 | 3 | extern crate proc_macro; 4 | use proc_macro::TokenStream; 5 | 6 | mod native; 7 | mod plugin; 8 | 9 | pub(crate) const NATIVE_PREFIX: &str = "__samp_native_"; 10 | pub(crate) const REG_PREFIX: &str = "__samp_reg_"; 11 | 12 | /// Generate C function that parses passed argument and calls current function. 13 | #[proc_macro_attribute] 14 | pub fn native(args: TokenStream, input: TokenStream) -> TokenStream { 15 | native::create_native(args, input) 16 | } 17 | 18 | /// Generates common plugin C interface. 19 | #[proc_macro] 20 | pub fn initialize_plugin(input: TokenStream) -> TokenStream { 21 | plugin::create_plugin(input) 22 | } 23 | -------------------------------------------------------------------------------- /samp-sdk/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "samp-sdk" 3 | version = "0.9.2" 4 | authors = ["ZOTTCE "] 5 | description = "Bindings for C SA:MP SDK" 6 | license = "MIT" 7 | repository = "https://github.com/zottce/samp-rs/" 8 | readme = "readme.md" 9 | edition = "2018" 10 | 11 | [features] 12 | default = [] 13 | encoding = ["encoding_rs"] 14 | 15 | [dependencies] 16 | bitflags = "1.0.4" 17 | encoding_rs = { version = "0.8.17", optional = true } 18 | 19 | [build-dependencies] 20 | colored = "1.7.0" 21 | 22 | [package.metadata.docs.rs] 23 | features = ["encoding"] 24 | default-target = "i686-pc-windows-msvc" 25 | -------------------------------------------------------------------------------- /samp-sdk/readme.md: -------------------------------------------------------------------------------- 1 | # todo 2 | check out samp-rs readme -------------------------------------------------------------------------------- /samp-sdk/src/cell/repr.rs: -------------------------------------------------------------------------------- 1 | //! A module to discribe how AMX cells work. 2 | use crate::amx::Amx; 3 | use crate::error::{AmxError, AmxResult}; 4 | 5 | /// AmxCell trait is a core trait of whole SDK. 6 | /// It shows that value can be borrowed (or copied if it's a primitive) from AMX and passed to it. 7 | pub trait AmxCell<'amx> 8 | where 9 | Self: Sized, 10 | { 11 | fn from_raw(_amx: &'amx Amx, _cell: i32) -> AmxResult 12 | where 13 | Self: 'amx, 14 | { 15 | Err(AmxError::General) 16 | } 17 | 18 | /// Get a value which can be passed to AMX. 19 | fn as_cell(&self) -> i32; 20 | } 21 | 22 | /// A marker showing that a value can be stored directly on a stack or a heap of an AMX. 23 | /// 24 | /// Types: i8, u8, i16, u16, i32, u32, usize, isize, f32, bool 25 | /// 26 | /// There is no values that's bigger than 4 bytes, because size of an AMX cell is 32 bits. 27 | pub unsafe trait AmxPrimitive 28 | where 29 | Self: Sized, 30 | { 31 | } 32 | 33 | impl<'a, T: AmxCell<'a>> AmxCell<'a> for &'a T { 34 | fn as_cell(&self) -> i32 { 35 | (**self).as_cell() 36 | } 37 | } 38 | 39 | impl<'a, T: AmxCell<'a>> AmxCell<'a> for &'a mut T { 40 | fn as_cell(&self) -> i32 { 41 | (**self).as_cell() 42 | } 43 | } 44 | 45 | macro_rules! impl_for_primitive { 46 | ($type:ty) => { 47 | impl AmxCell<'_> for $type { 48 | fn from_raw(_amx: &Amx, cell: i32) -> AmxResult { 49 | Ok(cell as Self) 50 | } 51 | 52 | fn as_cell(&self) -> i32 { 53 | *self as i32 54 | } 55 | } 56 | 57 | unsafe impl AmxPrimitive for $type {} 58 | }; 59 | } 60 | 61 | impl_for_primitive!(i8); 62 | impl_for_primitive!(u8); 63 | impl_for_primitive!(i16); 64 | impl_for_primitive!(u16); 65 | impl_for_primitive!(i32); 66 | impl_for_primitive!(u32); 67 | impl_for_primitive!(usize); 68 | impl_for_primitive!(isize); 69 | 70 | impl AmxCell<'_> for f32 { 71 | fn from_raw(_amx: &Amx, cell: i32) -> AmxResult { 72 | Ok(f32::from_bits(cell as u32)) 73 | } 74 | 75 | fn as_cell(&self) -> i32 { 76 | // can't use `as` here because a float value will be an integer 77 | // for example if you pass 10.0 (0x41200000) it will be 10 (0x0A) 78 | unsafe { std::mem::transmute(*self) } 79 | } 80 | } 81 | 82 | impl AmxCell<'_> for bool { 83 | fn from_raw(_amx: &Amx, cell: i32) -> AmxResult { 84 | // just to be sure that boolean value will be correct I don't use there `std::mem::transmute` or `as` keyword. 85 | Ok(cell != 0) 86 | } 87 | 88 | fn as_cell(&self) -> i32 { 89 | i32::from(*self) 90 | } 91 | } 92 | 93 | unsafe impl AmxPrimitive for f32 {} 94 | unsafe impl AmxPrimitive for bool {} 95 | -------------------------------------------------------------------------------- /samp-sdk/src/consts.rs: -------------------------------------------------------------------------------- 1 | //! Default AMX constants. 2 | use bitflags::bitflags; 3 | 4 | bitflags! { 5 | pub struct Supports: u32 { 6 | const VERSION = 512; 7 | const AMX_NATIVES = 0x10000; 8 | const PROCESS_TICK = 0x20000; 9 | } 10 | } 11 | 12 | /// Offsets 13 | #[derive(Debug, Clone, Copy, PartialEq)] 14 | pub enum ServerData { 15 | Logprintf = 0, 16 | AmxExports = 16, 17 | CallPublicFs = 17, 18 | CallPublicGm = 18, 19 | } 20 | 21 | impl From for isize { 22 | fn from(data: ServerData) -> isize { 23 | data as isize 24 | } 25 | } 26 | 27 | bitflags! { 28 | pub struct AmxFlags: u16 { 29 | const DEBUG = 0x02; 30 | const COMPACT = 0x04; 31 | const BYTEOPC = 0x08; 32 | const NOCHECKS = 0x10; 33 | const NTVREG = 0x1000; 34 | const JITC = 0x2000; 35 | const BROWSE = 0x4000; 36 | const RELOC = 0x8000; 37 | } 38 | } 39 | 40 | /// Index of an AMX function in memory. 41 | #[derive(Debug, Clone, Copy, PartialEq)] 42 | pub enum AmxExecIdx { 43 | Main, 44 | Continue, 45 | UserDef(i32), 46 | } 47 | 48 | impl From for i32 { 49 | fn from(value: AmxExecIdx) -> i32 { 50 | match value { 51 | AmxExecIdx::Main => -1, 52 | AmxExecIdx::Continue => -2, 53 | AmxExecIdx::UserDef(idx) => idx, 54 | } 55 | } 56 | } 57 | 58 | impl From for AmxExecIdx { 59 | fn from(idx: i32) -> AmxExecIdx { 60 | match idx { 61 | -1 => AmxExecIdx::Main, 62 | -2 => AmxExecIdx::Continue, 63 | idx => AmxExecIdx::UserDef(idx), 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /samp-sdk/src/encoding.rs: -------------------------------------------------------------------------------- 1 | //! String encoding. 2 | pub use encoding_rs::{WINDOWS_1251, WINDOWS_1252}; 3 | use encoding_rs::Encoding; 4 | 5 | static mut DEFAULT_ENCODING: &Encoding = WINDOWS_1252; 6 | 7 | pub fn set_default_encoding(encoding: &'static Encoding) { 8 | unsafe { 9 | DEFAULT_ENCODING = encoding; 10 | } 11 | } 12 | 13 | pub(crate) fn get() -> &'static Encoding { 14 | unsafe { 15 | DEFAULT_ENCODING 16 | } 17 | } -------------------------------------------------------------------------------- /samp-sdk/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod amx; 2 | pub mod args; 3 | pub mod cell; 4 | pub mod consts; 5 | #[cfg(feature = "encoding")] 6 | pub mod encoding; 7 | pub mod error; 8 | pub mod exports; 9 | #[doc(hidden)] 10 | pub mod macros; 11 | pub mod raw; 12 | -------------------------------------------------------------------------------- /samp-sdk/src/raw.rs: -------------------------------------------------------------------------------- 1 | //! Raw C definitions of AMX sturcture. 2 | 3 | pub mod functions; 4 | pub mod types; 5 | -------------------------------------------------------------------------------- /samp-sdk/src/raw/types.rs: -------------------------------------------------------------------------------- 1 | use super::functions::{AmxCallback, AmxDebug, AmxNative}; 2 | use std::os::raw::{c_char, c_int, c_long, c_uchar, c_void}; 3 | 4 | #[repr(C, packed)] 5 | pub struct AMX { 6 | pub base: *mut c_uchar, 7 | pub data: *mut c_uchar, 8 | pub callback: AmxCallback, 9 | pub debug: AmxDebug, 10 | pub cip: i32, 11 | pub frm: i32, 12 | pub hea: i32, 13 | pub hlw: i32, 14 | pub stk: i32, 15 | pub stp: i32, 16 | pub flags: c_int, 17 | pub usertags: [c_long; 4usize], 18 | pub userdata: [*mut c_void; 4usize], 19 | pub error: c_int, 20 | pub paramcount: c_int, 21 | pub pri: i32, 22 | pub alt: i32, 23 | pub reset_stk: i32, 24 | pub reset_hea: i32, 25 | pub sysreq_d: i32, 26 | } 27 | 28 | #[repr(C, packed)] 29 | pub struct AMX_NATIVE_INFO { 30 | pub name: *const c_char, 31 | pub func: AmxNative, 32 | } 33 | 34 | #[repr(C, packed)] 35 | pub struct AMX_FUNCSTUB { 36 | pub address: u32, 37 | pub name: [c_char; 20usize], 38 | } 39 | 40 | #[repr(C, packed)] 41 | pub struct ANX_FUNCSTUBNT { 42 | pub address: u32, 43 | pub nameofs: u32, 44 | } 45 | 46 | #[repr(C, packed)] 47 | pub struct AMX_HEADER { 48 | pub size: i32, 49 | pub magic: u16, 50 | pub file_version: c_char, 51 | pub amx_version: c_char, 52 | pub flags: i16, 53 | pub defsize: i16, 54 | pub cod: i32, 55 | pub dat: i32, 56 | pub hea: i32, 57 | pub stp: i32, 58 | pub cip: i32, 59 | pub publics: i32, 60 | pub natives: i32, 61 | pub libraries: i32, 62 | pub pubvars: i32, 63 | pub tags: i32, 64 | pub nametable: i32, 65 | } 66 | -------------------------------------------------------------------------------- /samp/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "samp" 3 | version = "0.1.3" 4 | authors = ["ZOTTCE "] 5 | description = "Tools to develop SA:MP plugins" 6 | license = "MIT" 7 | repository = "https://github.com/zottce/samp-rs/" 8 | readme = "../readme.md" 9 | edition = "2018" 10 | 11 | [features] 12 | default = [] 13 | encoding = ["samp-sdk/encoding"] 14 | 15 | [dependencies] 16 | samp-sdk = { path = "../samp-sdk", version = "0.9.2" } 17 | samp-codegen = { path = "../samp-codegen", version = "0.1.1" } 18 | fern = "0.5.7" 19 | 20 | [package.metadata.docs.rs] 21 | features = ["encoding"] 22 | default-target = "i686-pc-windows-msvc" 23 | -------------------------------------------------------------------------------- /samp/src/amx.rs: -------------------------------------------------------------------------------- 1 | //! Core Amx types with additional functions. 2 | pub use samp_sdk::amx::*; 3 | use samp_sdk::raw::types::AMX; 4 | 5 | use crate::runtime::Runtime; 6 | 7 | /// Get a reference to an `Amx` by given `AmxIdent`. 8 | /// 9 | /// # Example 10 | /// ``` 11 | /// use samp::prelude::*; 12 | /// use samp::exec_public; 13 | /// # use samp::native; 14 | /// # use samp::amx::AmxIdent; 15 | /// 16 | /// # struct Plugin { 17 | /// # subscribtions: std::collections::HashMap>, 18 | /// # } 19 | /// # 20 | /// # impl SampPlugin for Plugin {} 21 | /// # 22 | /// # impl Plugin { 23 | /// 24 | /// #[native(name = "SubscribeToEvent")] 25 | /// fn subscribe(&mut self, amx: &Amx, event_name: AmxString) -> AmxResult { 26 | /// let event_name = event_name.to_string(); 27 | /// let subs = self.subscribtions.entry(event_name).or_insert(vec![]); 28 | /// subs.push(amx.ident()); 29 | /// 30 | /// Ok(true) 31 | /// } 32 | /// 33 | /// fn publish(&self, event_name: &str) { 34 | /// if let Some(subs) = self.subscribtions.get(event_name) { 35 | /// for ident in subs { 36 | /// if let Some(amx) = samp::amx::get(*ident) { 37 | /// let _ = exec_public!(amx, event_name); 38 | /// } 39 | /// } 40 | /// } 41 | /// } 42 | /// 43 | /// # } 44 | /// ``` 45 | #[inline] 46 | pub fn get<'a>(ident: AmxIdent) -> Option<&'a Amx> { 47 | let rt = Runtime::get(); 48 | rt.amx_list().get(&ident) 49 | } 50 | 51 | #[inline] 52 | pub fn add<'a>(amx: *mut AMX) { 53 | let rt = Runtime::get(); 54 | rt.insert_amx(amx); 55 | } 56 | 57 | /// An unique identifier of an `Amx` instance. 58 | #[derive(Debug, Clone, Copy, PartialEq, Hash, Eq)] 59 | pub struct AmxIdent { 60 | ident: usize, 61 | } 62 | 63 | impl From<*mut AMX> for AmxIdent { 64 | fn from(ptr: *mut AMX) -> AmxIdent { 65 | AmxIdent { 66 | ident: ptr as usize, 67 | } 68 | } 69 | } 70 | 71 | /// Extended functional of an `Amx`. 72 | pub trait AmxExt { 73 | /// Get an identifier of an `Amx`. 74 | /// 75 | /// # Example 76 | /// ``` 77 | /// use samp::prelude::*; 78 | /// # use samp::native; 79 | /// # struct Plugin; 80 | /// # 81 | /// # impl SampPlugin for Plugin {} 82 | /// # 83 | /// # impl Plugin { 84 | /// 85 | /// #[native(name = "A")] 86 | /// fn native_a(&mut self, amx: &Amx) -> AmxResult { 87 | /// let ident = amx.ident(); 88 | /// // now you can use ident to get this Amx later by samp::amx::get 89 | /// Ok(true) 90 | /// } 91 | /// 92 | /// # } 93 | /// ``` 94 | fn ident(&self) -> AmxIdent; 95 | } 96 | 97 | impl AmxExt for Amx { 98 | #[inline] 99 | fn ident(&self) -> AmxIdent { 100 | self.amx().as_ptr().into() 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /samp/src/interlayer.rs: -------------------------------------------------------------------------------- 1 | use crate::runtime::Runtime; 2 | use samp_sdk::raw::types::{AMX, AMX_NATIVE_INFO}; 3 | 4 | pub fn supports() -> u32 { 5 | let rt = Runtime::get(); 6 | let supports = rt.supports(); 7 | 8 | supports.bits() 9 | } 10 | 11 | pub fn load(server_exports: *const usize) { 12 | let rt = Runtime::get(); 13 | let plugin = Runtime::plugin(); 14 | 15 | rt.set_server_exports(server_exports); 16 | plugin.on_load(); 17 | } 18 | 19 | pub fn unload() { 20 | let plugin = Runtime::plugin(); 21 | plugin.on_unload(); 22 | } 23 | 24 | pub fn amx_load(amx: *mut AMX, natives: &[AMX_NATIVE_INFO]) { 25 | let rt = Runtime::get(); 26 | let plugin = Runtime::plugin(); 27 | 28 | let amx = rt.insert_amx(amx).unwrap(); 29 | let _ = amx.register(natives); // don't care about errors, that function always raises errors. 30 | 31 | plugin.on_amx_load(amx); 32 | } 33 | 34 | pub fn amx_unload(amx: *mut AMX) { 35 | let rt = Runtime::get(); 36 | let plugin = Runtime::plugin(); 37 | 38 | if let Some(amx) = rt.remove_amx(amx) { 39 | plugin.on_amx_unload(&amx); 40 | } 41 | } 42 | 43 | #[inline] 44 | pub fn process_tick() { 45 | let plugin = Runtime::plugin(); 46 | plugin.process_tick(); 47 | } 48 | -------------------------------------------------------------------------------- /samp/src/lib.rs: -------------------------------------------------------------------------------- 1 | //! samp is a tool to develop plugins for [samp](http://sa-mp.com) servers written in rust. 2 | //! 3 | //! # project structure 4 | //! * `samp` is a glue between crates described below (that's what you need). 5 | //! * `samp-codegen` generates raw `extern "C"` functions and does whole nasty job. 6 | //! * `samp-sdk` contains all types to work with amx. 7 | //! 8 | //! # usage 9 | //! * [install](https://rustup.rs) rust compiler (supports only `i686` os versions because of samp server arch). 10 | //! * add in your `Cargo.toml` this: 11 | //! ```toml 12 | //! [lib] 13 | //! crate-type = ["cdylib"] # or dylib 14 | //! 15 | //! [dependencies] 16 | //! samp = "0.2.5" 17 | //! ``` 18 | //! * write your first plugin 19 | //! 20 | //! # examples 21 | //! * simple memcache plugin in `plugin-example` folder. 22 | //! * your `lib.rs` file 23 | //! ```rust,compile_fail 24 | //! use samp::prelude::*; // export most useful types 25 | //! use samp::{native, initialize_plugin}; // codegen macros 26 | //! 27 | //! struct Plugin; 28 | //! 29 | //! impl SampPlugin for Plugin { 30 | //! // this function executed when samp server loads your plugin 31 | //! fn on_load(&mut self) { 32 | //! println!("Plugin is loaded."); 33 | //! } 34 | //! } 35 | //! 36 | //! impl Plugin { 37 | //! #[native(name = "TestNative")] 38 | //! fn my_native(&mut self, _amx: &Amx, text: AmxString) -> AmxResult { 39 | //! let text = text.to_string(); // convert amx string into rust string 40 | //! println!("rust plugin: {}", text); 41 | //! 42 | //! Ok(true) 43 | //! } 44 | //! } 45 | //! 46 | //! initialize_plugin!( 47 | //! natives: [Plugin::my_native], 48 | //! { 49 | //! let plugin = Plugin; // create a plugin object 50 | //! return plugin; // return the plugin into runtime 51 | //! } 52 | //! ); 53 | //! ``` 54 | 55 | pub mod amx; 56 | #[doc(hidden)] 57 | pub mod interlayer; 58 | pub mod plugin; 59 | pub(crate) mod runtime; 60 | 61 | pub use samp_codegen::{initialize_plugin, native}; 62 | pub use samp_sdk::{args, cell, consts, error, exports, raw}; 63 | pub use samp_sdk::{exec_public}; // macros 64 | 65 | #[cfg(feature = "encoding")] 66 | pub use samp_sdk::encoding; 67 | 68 | pub mod prelude { 69 | //! Most used imports. 70 | pub use crate::amx::{Amx, AmxExt}; 71 | pub use crate::cell::{AmxCell, AmxString, Buffer, Ref, UnsizedBuffer}; 72 | pub use crate::error::AmxResult; 73 | pub use crate::plugin::SampPlugin; 74 | } 75 | --------------------------------------------------------------------------------