Advertisement
Guest User

SimpleRP.lua

a guest
Aug 1st, 2014
642
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 20.89 KB | None | 0 0
  1. ForumNames = {};
  2.  
  3. chatmode = 0; --global
  4. maintance = 0;
  5.  
  6. ClassItems = {};
  7. ClassItemCount = 0;
  8.  
  9. bodyMeshes =
  10. {
  11.     [1] = "Hum_Body_Naked0",
  12.     [2] = "Hum_Body_Babe0"
  13. };
  14.  
  15. headMeshes =
  16. {
  17.     [1] = "Hum_Head_FatBald",
  18.     [2] = "Hum_Head_Fighter",
  19.     [3] = "Hum_Head_Pony",
  20.     [4] = "Hum_Head_Bald",
  21.     [5] = "Hum_Head_Thief",
  22.     [6] = "Hum_Head_Psionic",
  23.     [7] = "Hum_Head_Babe"
  24. }
  25.  
  26. Animations =
  27. {
  28.     ["stand"] = "T_SIT_2_STAND",
  29.     ["sit"] = "T_STAND_2_SIT",
  30.     ["search"] = "T_SEARCH",
  31.     ["plunder"] = "T_PLUNDER",
  32.     ["kick"] = "T_BORINGKICK",
  33.     ["inspect"] = "T_1HSINSPECT",
  34.     ["train"] = "T_1HSFREE",
  35.     ["wash"] = "T_STAND_2_WASH",
  36.     ["pee"] = "T_STAND_2_PEE",
  37.     ["sleep"] = "T_STAND_2_SLEEPGROUND",
  38.     ["guardL"] = "T_STAND_2_LGUARD",
  39.     ["guardH"] = "T_STAND_2_HGUARD"
  40. };
  41.  
  42. Walkstyles =
  43. {
  44.     [1] = "HumanS_Normal.mds",
  45.     [2] = "HumanS_Tired.mds",
  46.     [3] = "HumanS_Relaxed.mds",
  47.     [4] = "HumanS_Militia.mds",
  48.     [5] = "HumanS_Arrogance.mds",
  49.     [6] = "HumanS_Mage.mds",
  50.     [7] = "HumanS_Babe.mds"
  51. };
  52.  
  53. function OnGamemodeInit()
  54.     print("Server started");
  55.  
  56.     SetRespawnTime(242535346);
  57.     EnableChat(0);
  58.  
  59.     db = sqlite3.open("SimpleRP.db");
  60.     print("Database loaded");
  61.  
  62.     db:exec("CREATE TABLE IF NOT EXISTS Player ( 'playerName' TEXT NOT NULL, 'charName' TEXT NOT NULL, 'world' TEXT NOT NULL, 'posX' INTEGER NOT NULL, 'posY' INTEGER NOT NULL, 'posZ' INTEGER NOT NULL, 'angle' INTEGER NOT NULL, 'bodyModel' TEXT NOT NULL, 'bodyTextureID' INTEGER NOT NULL, 'headModel' TEXT NOT NULL, 'headTextureID' INTEGER NOT NULL, 'walkstyle' TEXT NOT NULL, 'meleeWeapon' TEXT NOT NULL, 'rangedWeapon' TEXT NOT NULL, 'armor' TEXT NOT NULL, 'trashID' INTEGER NOT NULL PRIMARY KEY)");
  63.  
  64.     Classes = io.open("class.txt", "r+");
  65.  
  66.     for line in Classes:lines() do
  67.         local result, instance, amount = sscanf(line, "sd");
  68.  
  69.         if result == 1 then
  70.             ClassItemCount = ClassItemCount + 1;
  71.  
  72.             ClassItems[ClassItemCount] = {};
  73.             ClassItems[ClassItemCount]["instance"] = instance;
  74.             ClassItems[ClassItemCount]["amount"] = amount;
  75.         end
  76.     end
  77.  
  78.     print("Classes loaded");
  79. end
  80.  
  81. function SendMessageToPlayer(playerid, message)
  82.     SendPlayerMessage(playerid, 255, 255, 255, message);
  83. end
  84.  
  85. function SendMessageToAllPlayers(message)
  86.     SendMessageToAll(255, 255, 255, message);
  87. end
  88.  
  89. function SendMessageToAdmins(playerid, message)
  90.     for player = 0, GetMaxPlayers() - 1, 1 do
  91.         if IsPlayerAdmin(player) == 1 then
  92.             SendPlayerMessage(playerid, 255, 50, 0, message);
  93.         end
  94.     end
  95. end
  96.  
  97. function SendServerMessage(message)
  98.     SendMessageToAll(200, 50, 0, message);
  99. end
  100.  
  101. function OnPlayerConnect(playerid)
  102.     if maintance == 1 and GetPlayerName(playerid) ~= "NamesDesServerAdministrators" then
  103.         SendMessageToPlayer(playerid, "The server is currently under maintance. Please check back later");
  104.         Kick(playerid);
  105.  
  106.         return;
  107.     end
  108.  
  109.     ForumNames[playerid] = GetPlayerName(playerid);
  110.  
  111.     SpawnPlayer(playerid);
  112.  
  113.     SetPlayerPos(playerid, -270, -78, -950);
  114.     SetPlayerAngle(playerid, 112);
  115.  
  116.     SetPlayerStrength(playerid, 100);
  117.     SetPlayerDexterity(playerid, 100);
  118.     SetPlayerHealth(playerid, 500);
  119.     SetPlayerMaxHealth(playerid, 500);
  120.     SetPlayerSkillWeapon(playerid, 0, 50);
  121.     SetPlayerSkillWeapon(playerid, 1, 50);
  122.     SetPlayerSkillWeapon(playerid, 2, 50);
  123.     SetPlayerSkillWeapon(playerid, 3, 50);
  124.     SetPlayerScience(playerid, 0, 1);
  125.  
  126.     registered = 0;
  127.  
  128.     for results in db:nrows("SELECT charName, posX, posY, posZ, angle, bodyModel, bodyTextureID, headModel, headTextureID, walkstyle, meleeWeapon, rangedWeapon, armor FROM Player WHERE playerName = '"..GetPlayerName(playerid).."'") do
  129.         SetPlayerName(playerid, results["charName"]);
  130.         SetPlayerPos(playerid, results["posX"], results["posY"], results["posZ"]);
  131.         SetPlayerAngle(playerid, results["angle"]);
  132.         SetPlayerAdditionalVisual(playerid, results["bodyModel"], results["bodyTextureID"], results["headModel"], results["headTextureID"]);
  133.         SetPlayerWalk(playerid, results["walkstyle"]);
  134.  
  135.         if results["meleeWeapon"] ~= "NULL" then
  136.             EquipItem(playerid, results["meleeWeapon"]);
  137.         end
  138.  
  139.         if results["rangedWeapon"] ~= "NULL" then
  140.             EquipItem(playerid, results["rangedWeapon"]);
  141.         end
  142.  
  143.         if results["armor"] ~= "NULL" then
  144.             EquipItem(playerid, results["armor"]);
  145.         end
  146.  
  147.         registered = 1;
  148.     end
  149.  
  150.     if registered == 0 then
  151.         local bodyModel, bodyTextureID, headModel, headTextureID = GetPlayerAdditionalVisual(playerid);
  152.         db:exec("INSERT INTO Player (playerName, charName, world, posX, posY, posZ, angle, bodyModel, bodyTextureID, headModel, headTextureID, walkstyle, meleeWeapon, rangedWeapon, armor) VALUES ('"..GetPlayerName(playerid).."', '"..GetPlayerName(playerid).."', 'NEWWORLD\\NEWWORLD.ZEN', -270, -78, -950, 112, '"..bodyModel.."', "..bodyTextureID..", '"..headModel.."', "..headTextureID..", 'HumanS_Normal.mds', 'NULL', 'NULL', 'NULL')");
  153.     end
  154.  
  155.     for itemCounter = 1, ClassItemCount, 1 do
  156.         GiveItem(playerid, ClassItems[itemCounter]["instance"], ClassItems[itemCounter]["amount"]);
  157.     end
  158.  
  159.     SendServerMessage(GetPlayerName(playerid).." connected to the server!");
  160.     SendMessageToPlayer(playerid, "Welcome at Simple Roleplay!");
  161.     SendMessageToPlayer(playerid, "Enter /help for available commands");
  162.     SendMessageToPlayer(playerid, 'Please put " //" in front of every offtopic message (e.g. " //this is a test"');
  163. end
  164.  
  165. function OnPlayerDisconnect(playerid, reason)
  166.     if ForumNames[playerid] == nil then
  167.         return;
  168.     end
  169.  
  170.     local x, y, z = GetPlayerPos(playerid);
  171.     local angle = GetPlayerAngle(playerid);
  172.     local world = GetPlayerWorld(playerid);
  173.  
  174.     db:exec("UPDATE Player SET world='"..world.."', posX="..x..", posY="..y..", posZ="..z..", angle="..angle.." WHERE playerName = '"..ForumNames[playerid].."'");
  175.  
  176.     if reason == 0 then
  177.         SendServerMessage(GetPlayerName(playerid).." disconnected from the server!");
  178.     elseif reason == 1 then
  179.         SendServerMessage(GetPlayerName(playerid).." crashed!");
  180.     end
  181.  
  182.     ForumNames[playerid] = nil;
  183. end
  184.  
  185. function OnPlayerChangeWalk(playerid, currWalk, oldWalk)
  186.     db:exec("UPDATE Player SET walkstyle='"..currWalk.."' WHERE playerName = '"..ForumNames[playerid].."'");
  187.  
  188.     SetPlayerWalk(playerid, "Humans_1hST1.mds"); --Humans_1hST2.mds
  189. end
  190.  
  191. function OnPlayerChangeMeleeWeapon(playerid, currMelee, oldMelee)
  192.     db:exec("UPDATE Player SET meleeWeapon='"..currMelee.."' WHERE playerName = '"..ForumNames[playerid].."'");
  193. end
  194.  
  195. function OnPlayerChangeRangedWeapon(playerid, currRanged, oldRanged)
  196.     db:exec("UPDATE Player SET rangedWeapon='"..currRanged.."' WHERE playerName = '"..ForumNames[playerid].."'");
  197. end
  198.  
  199. function OnPlayerChangeArmor(playerid, currArmor, oldArmor)
  200.     db:exec("UPDATE Player SET armor='"..currArmor.."' WHERE playerName = '"..ForumNames[playerid].."'");
  201. end
  202.  
  203. function Log(filename, text)
  204.     local logfile = io.open(filename..".txt", "a+");
  205.     logfile:write(os.date("%d.%m.%Y %H:%M:%S ")..text.."\n");
  206.     logfile:close();
  207. end
  208.  
  209. function OnPlayerDeath(playerid, killerid)
  210.     SendMessageToPlayer(playerid, "Your character is dead. Please relog.");
  211.     SendMessageToPlayer(playerid, "You are free to either play a different character or the old one (remember that he is injured though)");
  212.  
  213.     Kick(playerid);
  214. end
  215.  
  216. function OnPlayerText(playerid, text)
  217.     if chatmode == 0 then
  218.         SendMessageToAllPlayers(GetPlayerName(playerid)..": "..text);
  219.         Log("GlobalChat", GetPlayerName(playerid)..": "..text);
  220.  
  221.     elseif chatmode == 1 then
  222.         SendMessageToPlayer(playerid, GetPlayerName(playerid)..": "..text);
  223.  
  224.         for player = 0, GetMaxPlayers() - 1, 1 do
  225.             if IsPlayerConnected(player) == 1 then
  226.                 if GetDistancePlayers(playerid, player) < 500 and playerid ~= player then
  227.                     SendMessageToPlayer(player, GetPlayerName(playerid)..": "..text);
  228.                 end
  229.             end
  230.         end
  231.  
  232.         Log("RoleplayChat", GetPlayerName(playerid)..": "..text);
  233.     end
  234. end
  235.  
  236. function OnPlayerCommandText(playerid, cmdtext)
  237.     local cmd, text = GetCommand(cmdtext);
  238.  
  239.     if cmd == "/help" then
  240.         SendMessageToPlayer(playerid, "/setname (name) -> Changes your nickname");
  241.         SendMessageToPlayer(playerid, "/face (id), /head (id), /skin (id), /body (id) -> Changes your look");
  242.         SendMessageToPlayer(playerid, "/dice -> Dices a number between 1 and 6");
  243.         SendMessageToPlayer(playerid, "/ani -> Shows the animation list");
  244.         SendMessageToPlayer(playerid, "/ani (aniname) -> Plays a animation");
  245.         SendMessageToPlayer(playerid, "/walk -> Shows the walkstyle list");
  246.         SendMessageToPlayer(playerid, "/walk (id) -> Changes your walkstyle");
  247.         SendMessageToPlayer(playerid, "/me (text) -> Description starting with your name");
  248.         SendMessageToPlayer(playerid, "/x (text) -> Description without names");
  249.         SendMessageToPlayer(playerid, "/s (text) -> Shouts a message with wider range");
  250.  
  251.     elseif cmd == "/s" then
  252.         local result, message = sscanf(text, "s");
  253.  
  254.         if chatmode == 1 then
  255.             SendMessageToPlayer(playerid, GetPlayerName(playerid).." shouts: "..message);
  256.  
  257.             for player = 0, GetMaxPlayers() - 1, 1 do
  258.                 if IsPlayerConnected(player) == 1 and playerid ~= player then
  259.                     if GetDistancePlayers(playerid, player) < 2000 then
  260.                         SendMessageToPlayer(player, GetPlayerName(playerid).." shouts: "..message);
  261.                     end
  262.                 end
  263.             end
  264.  
  265.             Log("RoleplayChat", GetPlayerName(playerid).." shouts: "..message);
  266.         else
  267.             SendMessageToPlayer(playerid, "Shouts are only necessary in roleplay mode which isn't active at the moment");
  268.         end
  269.  
  270.     elseif cmd == "/me" then
  271.         local result, message = sscanf(text, "s");
  272.  
  273.         if result == 1 then
  274.             if chatmode == 0 then
  275.                 SendMessageToAllPlayers(GetPlayerName(playerid).. " "..message);
  276.                 Log("GlobalChat", GetPlayerName(playerid).." "..message);
  277.  
  278.             elseif chatmode == 1 then
  279.                 SendMessageToPlayer(playerid, GetPlayerName(playerid).. " "..message);
  280.  
  281.                 for player = 0, GetMaxPlayers() - 1, 1 do
  282.                     if IsPlayerConnected(player) == 1 and playerid ~= player then
  283.                         if GetDistancePlayers(playerid, player) < 2000 then
  284.                             SendMessageToPlayer(player, GetPlayerName(playerid).. " "..message);
  285.                         end
  286.                     end
  287.                 end
  288.  
  289.                 Log("RoleplayChat", GetPlayerName(playerid).." "..message);
  290.             end
  291.         end
  292.  
  293.     elseif cmd == "/x" then
  294.         local result, message = sscanf(text, "s");
  295.  
  296.         if result == 1 then
  297.             if chatmode == 0 then
  298.                 SendMessageToAllPlayers(message);
  299.                 Log("GlobalChat", message);
  300.  
  301.             elseif chatmode == 1 then
  302.                 SendMessageToPlayer(playerid, message);
  303.  
  304.                 for player = 0, GetMaxPlayers() - 1, 1 do
  305.                     if IsPlayerConnected(player) == 1 and playerid ~= player then
  306.                         if GetDistancePlayers(playerid, player) < 2000 then
  307.                             SendMessageToPlayer(player, message);
  308.                         end
  309.                     end
  310.                 end
  311.  
  312.             Log("RoleplayChat", message);
  313.         end
  314.     end
  315.  
  316.     elseif cmd == "/dice" then
  317.         local rand = math.random(6);
  318.  
  319.         SendMessageToAllPlayers(GetPlayerName(playerid).." diced a "..rand);
  320.  
  321.         if chatmode == 0 then
  322.             Log("GlobalChat", GetPlayerName(playerid).." diced a "..rand);
  323.         elseif chatmode == 1 then
  324.             Log("GlobalChat", GetPlayerName(playerid).." diced a "..rand);
  325.         end
  326.  
  327.     elseif cmd == "/globalchat" then
  328.         if IsPlayerAdmin(playerid) == 1 then
  329.             chatmode = 0;
  330.  
  331.             for line = 1, 30, 1 do
  332.                 SendPlayerMessage(playerid, 255, 255, 255, "");
  333.             end
  334.  
  335.             SendMessageToAllPlayers(GetPlayerName(playerid).." activated the global chat");
  336.         end
  337.  
  338.     elseif cmd == "/roleplaychat" then
  339.         if IsPlayerAdmin(playerid) == 1 then
  340.             chatmode = 1;
  341.  
  342.             for line = 1, 30, 1 do
  343.                 SendPlayerMessage(playerid, 255, 255, 255, "");
  344.             end
  345.  
  346.             SendMessageToAllPlayers(GetPlayerName(playerid).." activated the roleplay chat");
  347.         end
  348.  
  349.     elseif cmd == "/srvmsg" then
  350.         if IsPlayerAdmin(playerid) == 1 then
  351.             local result, message = sscanf(text, "s");
  352.  
  353.             if result == 1 then
  354.                 SendMessageToAllPlayers("[Server]".." "..message);
  355.                 Log("ServerChat", "Message by "..GetPlayerName(playerid)..": "..message);
  356.             end
  357.         end
  358.  
  359.     elseif cmd == "/setname" then
  360.         local result, name = sscanf(text, "s");
  361.  
  362.         if result == 1 then
  363.             for results in db:nrows("SELECT charName FROM 'Player' WHERE charName='"..name.."' AND playerName = '"..ForumNames[playerid].."'") do
  364.                 SendMessageToPlayer(playerid, "A character with this name exists already");
  365.             end
  366.  
  367.             SetPlayerName(playerid, name);
  368.             SendMessageToPlayer(playerid, "Changed your name to: "..GetPlayerName(playerid));
  369.  
  370.             db:exec("UPDATE Player SET charName='"..name.."' WHERE playerName = '"..ForumNames[playerid].."'");
  371.         end
  372.  
  373.     elseif cmd == "/giveitem" then
  374.         if IsPlayerAdmin(playerid) ~= 1 then
  375.             return;
  376.         end
  377.  
  378.         local result, id, instance, amount = sscanf(text, "dsd");
  379.  
  380.         if result == 1 then
  381.             if IsPlayerConnected(id) ~= 1 then
  382.                 SendMessageToPlayer(playerid, "No player online at slot id");
  383.                 return;
  384.             end
  385.  
  386.             GiveItem(id, instance, amount);
  387.  
  388.             SendMessageToPlayer(id, "You've received "..amount.." "..instance.." from "..GetPlayerName(playerid));
  389.             SendMessageToPlayer(playerid, GetPlayerName(id).." received "..amount.." "..instance.." from you");
  390.         end
  391.  
  392.     elseif cmd == "/heal" then
  393.         if IsPlayerAdmin(playerid) ~= 1 then
  394.             return;
  395.         end
  396.  
  397.         local result, id = sscanf(text, "d");
  398.  
  399.         if result == 1 then
  400.             if IsPlayerConnected(id) ~= 1 then
  401.                 SendMessageToPlayer(playerid, "The specified player isn't online");
  402.                 return;
  403.             end
  404.  
  405.             SetPlayerHealth(id, GetPlayerMaxHealth(id));
  406.  
  407.             SendMessageToAllPlayers(GetPlayerName(playerid).." healed "..GetPlayerName(id));
  408.         else
  409.             SendMessageToPlayer(playerid, "Wrong format. Please use: /heal (playerID)");
  410.         end
  411.  
  412.     elseif cmd == "/teleport" then
  413.         if IsPlayerAdmin(playerid) ~= 1 then
  414.             return;
  415.         end
  416.  
  417.         local result, fromID, toID = sscanf(text, "dd");
  418.  
  419.         if result == 1 then
  420.             if IsPlayerConnected(fromID) ~= 1 or IsPlayerConnected(toID) ~= 1 then
  421.                 SendMessageToPlayer(playerid, "One or both players aren't online");
  422.                 return;
  423.             end
  424.  
  425.             local x, y, z = GetPlayerPos(toID);
  426.  
  427.             SetPlayerPos(fromID, x, y, z);
  428.             SendMessageToAllPlayers(GetPlayerName(playerid).." teleported "..GetPlayerName(fromID).." to "..GetPlayerName(toID));
  429.         else
  430.             SendMessageToPlayer(playerid, "Wrong format. Please use: /teleport (fromID), (toID)");
  431.         end
  432.  
  433.     elseif cmd == "/kick" then
  434.         if IsPlayerAdmin(playerid) ~= 1 then
  435.             return;
  436.         end
  437.  
  438.         local result, id, reason = sscanf(text, "ds");
  439.  
  440.         if result == 1 then
  441.             if IsPlayerConnected(id) ~= 1 then
  442.                 SendMessageToPlayer(playerid, "The specified player isn't online");
  443.                 return;
  444.             end
  445.  
  446.             SendMessageToAllPlayers(GetPlayerName(playerid).." kicked player "..GetPlayerName(id)..". Reason: "..reason);
  447.             Kick(id);
  448.         end
  449.  
  450.  
  451.         local result, id = sscanf(text, "d");
  452.  
  453.         if result == 1 then
  454.             if IsPlayerConnected(id) ~= 1 then
  455.                 SendMessageToPlayer(playerid, "The specified player isn't online");
  456.                 return;
  457.             end
  458.  
  459.             SendMessageToAllPlayers(GetPlayerName(playerid).." kicked player "..GetPlayerName(id)..". No reason specified");
  460.             Kick(id);
  461.             return;
  462.         end
  463.  
  464.         SendMessageToPlayer(playerid, "Wrong format. Please use: /kick (playerID)");
  465.  
  466.     elseif cmd == "/ban" then
  467.         if IsPlayerAdmin(playerid) ~= 1 then
  468.             return;
  469.         end
  470.  
  471.  
  472.         local result, id, reason = sscanf(text, "ds");
  473.  
  474.         if result == 1 then
  475.             if IsPlayerConnected(id) ~= 1 then
  476.                 SendMessageToPlayer(playerid, "The specified player isn't online");
  477.                 return;
  478.             end
  479.  
  480.             SendMessageToAllPlayers(GetPlayerName(playerid).." banned player "..GetPlayerName(id)..". Reason: "..reason);
  481.             Ban(id);
  482.             return;
  483.         end
  484.  
  485.  
  486.         local result, id = sscanf(text, "d");
  487.  
  488.         if result == 1 then
  489.             if IsPlayerConnected(id) ~= 1 then
  490.                 SendMessageToPlayer(playerid, "The specified player isn't online");
  491.                 return;
  492.             end
  493.  
  494.             SendMessageToAllPlayers(GetPlayerName(playerid).." banned player "..GetPlayerName(id)..". No reason specified");
  495.             Ban(id);
  496.             return;
  497.         end
  498.  
  499.         SendMessageToPlayer(playerid, "Wrong format. Please use: /ban (playerID)");
  500.  
  501.     elseif cmd == "/maintance" then
  502.         if IsPlayerAdmin(playerid) ~= 1 then
  503.             return;
  504.         end
  505.  
  506.         SendMessageToAllPlayers("A server maintance was initiated. Please check back later");
  507.  
  508.         maintance = 1;
  509.  
  510.         for player = 0, GetMaxPlayers() - 1, 1 do
  511.             if IsPlayerConnected(player) == 1 and player ~= playerid then
  512.                 Kick(player);
  513.             end
  514.         end
  515.  
  516.     elseif cmd == "/stopmaintance" then
  517.         if IsPlayerAdmin(playerid) ~= 1 then
  518.             return;
  519.         end
  520.  
  521.         SendMessageToPlayer(playerid, "The server maintance ended. From now on players are free to join again");
  522.  
  523.         maintance = 0;
  524.        
  525.     elseif cmd == "/setpos" then
  526.         if IsPlayerAdmin(playerid) ~= 1 then
  527.             return;
  528.         end
  529.    
  530.         local result, x, y, z = sscanf(text, "ddd");
  531.        
  532.         if result == 1 then
  533.             SetPlayerPos(playerid, x, y, z);
  534.             SendMessageToPlayer(playerid, "Your position was changed");
  535.         else
  536.             SendMessageToPlayer(playerid, "Wrong format. Please use: /position (posX) (posY) (posZ)");
  537.         end
  538.        
  539.     elseif cmd == "/getpos" then
  540.         if IsPlayerAdmin(playerid) ~= 1 then
  541.             return;
  542.         end
  543.    
  544.         local x, y, z = GetPlayerPos(playerid);
  545.         local angle = GetPlayerAngle(playerid);
  546.        
  547.         posFile = io.open("positions", "a+");
  548.        
  549.         posFile:write("position: "..x..", "..y..", "..z.." angle: "..angle);
  550.         posFile:close();
  551.        
  552.         SendMessageToPlayer(playerid, "Your position was saved");
  553.  
  554.     elseif cmd == "/ani" then
  555.         local result, aniname = sscanf(text, "s");
  556.  
  557.         if result == 1 then
  558.             if Animations[aniname] ~= nil then
  559.                 PlayAnimation(playerid, Animations[aniname]);
  560.             else
  561.                 SendMessageToPlayer(playerid, "No animation is assigned to the name "..aniname);
  562.             end
  563.         else
  564.             SendMessageToPlayer(playerid, "Following animations are available (/ani (aniName))");
  565.  
  566.             local aniList = "";
  567.             local aniCount = 0;
  568.  
  569.             for animation in pairs(Animations) do
  570.                 aniList = aniList.." "..animation;
  571.                 aniCount = aniCount + 1;
  572.  
  573.                 if aniCount == 5 then
  574.                     SendMessageToPlayer(playerid, aniList);
  575.  
  576.                     aniList = "";
  577.                     aniCount = 0;
  578.                 end
  579.             end
  580.  
  581.             SendMessageToPlayer(playerid, aniList);
  582.         end
  583.  
  584.     elseif cmd == "/walk" then
  585.         local result, walkid = sscanf(text, "d");
  586.  
  587.         if result == 1 then
  588.             if Walkstyles[walkid] ~= nil then
  589.                 SetPlayerWalk(playerid, Walkstyles[walkid]);
  590.             else
  591.                 SendMessageToPlayer(playerid, "No walkstyle is assigned with the ID "..walkid.." (available are 1-7)");
  592.             end
  593.         else
  594.             SendMessageToPlayer(playerid, "Following IDs can be used to set your walkstyle (/walk (walkID))");
  595.  
  596.             walkList = "";
  597.             walkCount = 0;
  598.  
  599.             for walkstyle in pairs(Walkstyles) do
  600.                 walkList = walkList.." "..walkstyle.." = "..Walkstyles[walkstyle];
  601.                 walkCount = walkCount + 1;
  602.  
  603.                 if walkCount == 5 then
  604.                     SendMessageToPlayer(playerid, walkList);
  605.  
  606.                     walkList = "";
  607.                     walkCount = 0;
  608.                 end
  609.             end
  610.  
  611.             SendMessageToPlayer(playerid, walkList);
  612.         end
  613.  
  614.     elseif cmd == "/face" then
  615.         local result, faceid = sscanf(text, "d");
  616.  
  617.         if result == 1 then
  618.             if faceid >= 0 and faceid <= 162 then
  619.                 local bodyModel, bodyTextureID, headModel, headTextureID = GetPlayerAdditionalVisual(playerid);
  620.  
  621.                 SetPlayerAdditionalVisual(playerid, bodyModel, bodyTextureID, headModel, faceid);
  622.                 db:exec("UPDATE Player SET headTextureID="..faceid.." WHERE playerName = '"..ForumNames[playerid].."'");
  623.             else
  624.                 SendMessageToPlayer(playerid, "No face found. Face IDs: 0-162");
  625.             end
  626.         else
  627.             SendMessageToPlayer(playerid, "Wrong format. Please use: /face (faceID)");
  628.         end
  629.  
  630.     elseif cmd == "/skin" then
  631.         local result, skinid = sscanf(text, "d");
  632.  
  633.         if result == 1 then
  634.             if skinid >= 0 and skinid <= 7 then
  635.                 local bodyModel, bodyTextureID, headModel, headTextureID = GetPlayerAdditionalVisual(playerid);
  636.  
  637.                 SetPlayerAdditionalVisual(playerid, bodyModel, skinid, headModel, headTextureID);
  638.                 db:exec("UPDATE Player SET bodyTextureID="..skinid.." WHERE playerName = '"..ForumNames[playerid].."'");
  639.             else
  640.                 SendMessageToPlayer(playerid, "No skin found. Skin IDs: 0-7");
  641.             end
  642.         else
  643.             SendMessageToPlayer(playerid, "Wrong format. Please use: /skin (skinID)");
  644.         end
  645.  
  646.     elseif cmd == "/body" then
  647.         local result, bodyid = sscanf(text, "d");
  648.  
  649.         if result == 1 then
  650.             if bodyMeshes[bodyid] ~= nil then
  651.                 local bodyModel, bodyTextureID, headModel, headTextureID = GetPlayerAdditionalVisual(playerid);
  652.  
  653.                 SetPlayerAdditionalVisual(playerid, bodyMeshes[bodyid], bodyTextureID, headModel, headTextureID);
  654.                 db:exec("UPDATE Player SET bodyModel='"..bodyMeshes[bodyid].."' WHERE playerName = '"..ForumNames[playerid].."'");
  655.             else
  656.                 SendMessageToPlayer(playerid, "No body found. Body IDs: 1-2");
  657.             end
  658.         else
  659.             SendMessageToPlayer(playerid, "Wrong format. Please use: /body (bodyID)");
  660.         end
  661.  
  662.     elseif cmd == "/head" then
  663.         local result, headid = sscanf(text, "d");
  664.  
  665.         if result == 1 then
  666.             if headMeshes[headid] ~= nil then
  667.                 local bodyModel, bodyTextureID, headModel, headTextureID = GetPlayerAdditionalVisual(playerid);
  668.  
  669.                 SetPlayerAdditionalVisual(playerid, bodyModel, bodyTextureID, headMeshes[headid], headTextureID);
  670.                 db:exec("UPDATE Player SET headModel='"..headMeshes[headid].."' WHERE playerName = '"..ForumNames[playerid].."'");
  671.             else
  672.                 SendMessageToPlayer(playerid, "No head found. Head IDs: 1-7");
  673.             end
  674.         else
  675.             SendMessageToPlayer(playerid, "Wrong format. Please use: /head (headID)");
  676.         end
  677.     end
  678. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement