local version = "0.1"
local servername = " "
local gmname = "Server"
local MAX_PLAYERS = GetMaxPlayers();
local MaxPlayers = 100;
local Player = {};
function InitGamemode()
for i = 0, MaxPlayers - 1 do
Player[i] = {};
Player[i].loggedIn = nil;
end
print("Wolfram");
SetGamemodeName(string.format("%s %s",gmname,version));
EnableChat(0);
end
function guiCharacter(playerid)
local servernmd = CreateDraw(5200,200 , string.format("%s" , "Server name: Wolfram") , "Font_Old_10_White_Hi.TGA" ,236 , 236 , 236);
ShowDraw(playerid , servernmd);
local testowyRysunek = CreateDraw(5200,400 , string.format("%s" , "Administrator: ") , "Font_Old_10_White_Hi.TGA" ,236 , 236 , 236);
ShowDraw(playerid , testowyRysunek);
name = GetPlayerName(playerid);
end
function OnGamemodeInit()
print("------------------------------------------------------");
print("Wolfram");
print("Wolfram by ChrystianSandu");
print("------------------------------------------------------");
InitGamemode();
end
function OnPlayerSpawn(playerid)
end
function OnPlayerConnect(playerid)
FreezePlayer(playerid,1);
Player[playerid].name = GetPlayerName(playerid);
local file = io.open(Player[playerid].name..".par","r+");
if file then
SendPlayerMessage(playerid,230,230,230,"There is saved data for your character. Enter your credentials please!");
FreezePlayer(playerid,1);
file:close();
else
SendPlayerMessage(playerid,230,230,230,"No data exists for this name. Please register!");
end
end
function OnPlayerChangeClass(playerid, classid)
SpawnPlayer(playerid);
end
function OnPlayerCommandText(playerid , cmdtext)
local cmd , params = GetCommand(cmdtext);
if cmd == "/register" then
if Player[playerid].loggedIn == nil then
CMD_Register(playerid,params);
else
SendPlayerMessage(playerid,230,230,230,"You've already registered a character!");
end
elseif cmd == "/login" then
if Player[playerid].loggedIn == nil then
CMD_Login(playerid,params);
else
SendPlayerMessage(playerid,230,230,230,"You're logged in already!");
end
elseif cmd == "/changepw" then
if Player[playerid].loggedIn == 1 then
CMD_ChangePassword(playerid,params);
else
SendPlayerMessage(playerid,230,230,230,"You need to be logged in!");
end
end
if cmd == "/b" then
CMD_OOC(playerid , params);
elseif cmd == "/w" then
CMD_PM(playerid , params);
elseif cmd == "/k" then
CMD_k(playerid , params);
elseif cmdtext == "/suicide" then
CMD_suicide(playerid, cmdtext)
elseif cmdtext == "/save" then
CMD_save(playerid, cmdtext)
elseif cmdtext == "/help" then
CMD_help(playerid, cmdtext)
elseif cmdtext == "/en" then
CMD_en(playerid, cmdtext)
elseif cmdtext == "/ro" then
CMD_ro(playerid, cmdtext)
elseif cmdtext == "/ruler" then
CMD_ruler(playerid, cmdtext)
elseif cmdtext == "/cmdr" then
CMD_cmdr(playerid, cmdtext)
elseif cmdtext == "/rulee" then
CMD_rulee(playerid, cmdtext)
elseif cmdtext == "/cmde" then
CMD_cmde(playerid, cmdtext)
elseif cmdtext == "/class" then
CMD_class(playerid, params)
elseif cmdtext == "/trade" then
Trade(playerid , cmdtext);
elseif cmdtext == "/g" then
CMD_g(playerid, params);
end
end
----------------------------------------------------------------
function Trade(playerid, params)
local result, slot, amount, price = sscanf(params, "ddd");
if result == 1 then
local focus_id = GetFocus(playerid);
if focus_id ~= -1 then
if IsNPC(focus_id) == 0 then
local item, item_amount = checkPlayerSlot(playerid, slot);
if item and item_amount >= amount then
SendPlayerMessage(playerid, 0, 255, 0, "Send offer: "..item.." amount: "..amount);
SendPlayerMessage(focus_id, 0, 255, 0, "Received offer: "..item.." amount: "..amount);
else
SendPlayerMessage(playerid, 255, 0, 0, "You don't have this item or you don't have enough amount!");
end
else
SendPlayerMessage(playerid, 255, 0, 0, "You can't trade with bot!");
end
else
SendPlayerMessage(playerid, 255, 0, 0, "You don't have any focus!");
end
else
SendPlayerMessage(playerid, 255, 0, 0, "Type /trade slot amount price");
end
end
function CMD_suicide(playerid, cmdtext)
SetPlayerHealth(playerid,0);
SendPlayerMessage(playerid,255,250,200,"Te-ai sinucis");
end
function CMD_help(playerid, cmdtext)
SendPlayerMessage(playerid,119,61,200,"English or Romanian? (/en or /ro)");
end
function CMD_save(playerid, cmdtext)
WriteDatabase(playerid);
SendPlayerMessage(playerid,10 , 255 , 0,"Salvare joc...");
SendPlayerMessage(playerid,10 , 255 , 0,"Salvare completa");
end
function OnPlayerText(playerid , text)
local name = GetPlayerName(playerid);
for i = 0, MAX_PLAYERS - 1 do
if GetDistancePlayers(playerid , i) <= 100 then
if IsPlayerAdmin(playerid) == 1
then
SendPlayerMessage(i , 153 , 0 , 77 , string.format("%s %s %s", name , "say:" , text));
else
SendPlayerMessage(i , 236 , 236 , 236 , string.format("%s %s %s" , name , "say:" , text));
end
end
end
end
function CMD_k(playerid , params)
local result , chattext = sscanf(params , "s")
local name = GetPlayerName(playerid);
for i = 0, MAX_PLAYERS - 1 do
if GetDistancePlayers(playerid , i) <= 350 then
SendPlayerMessage(i , 102 , 0 , 0 , string.format("%s %s %s" ,name , "shout:" , chattext));
end
end
end
function CMD_g(playerid , params)
if IsPlayerAdmin(playerid) == 1
then
local result, chattext = sscanf(params , "s");
if result == 1 then
for i = 0, MAX_PLAYERS - 1 do
SendMessageToAll(i,156 , 78, 59 , string.format("%s %s %s" ,name , "global:" , chattext));
end
end
else
SendPlayerMessage(playerid,10 , 255 , 0,"Nu esti administrator!");
end
end
function CMD_OOC(playerid , params)
local result , chattext = sscanf(params , "s")
local name = GetPlayerName(playerid);
for i = 0, MAX_PLAYERS - 1 do
if GetDistancePlayers(playerid , i) <= 100 then
SendPlayerMessage(i , 122, 255 , 228 , string.format("%s : (%s)" ,name , chattext));
end
end
end
function CMD_PM(playerid , params)
local name = GetPlayerName(playerid);
local result , lid , msg = sscanf(params , "ds");
if result == 1 then
if IsPlayerConnected(lid) then
SendPlayerMessage(lid , 236 , 236 , 236 , string.format("%s : %s" , name , msg));
GameTextForPlayer(lid , 3000 , 3000 , "You have got PM!" , "Font_Old_20_White_Hi.TGA" , 236 , 236 , 236 , 1000);
GameTextForPlayer(playerid , 3000 , 3000 , "Message sended!" , "Font_Old_20_White_Hi.TGA" , 236 , 236 , 236 , 1000);
else
GameTextForPlayer(playerid , 3000 , 3000 , "Player is not online!" , "Font_Old_20_White_Hi.TGA" , 236 , 236 , 236 , 1000);
end
else
SendPlayerMessage(playerid, 236 , 236 , 236 , "Bad message format!");
SendPlayerMessage(playerid , 236 , 236 , 236 , "use : /pm id message");
end
end
-------------------------------------------------------------{help}------------------------------------
function CMD_ro(playerid, cmdtext)
SendPlayerMessage(playerid,77,5,200," ");
SendPlayerMessage(playerid,77,5,200,"Bine, esti Roman.");
SendPlayerMessage(playerid,77,5,200,"Administratorul principal al server-ului este ChrystianSandu.");
SendPlayerMessage(playerid,77,5,200,"Pentru comenzi: /cmdr.");
SendPlayerMessage(playerid,77,5,200,"Pentru regulament: /ruler.");
end
function CMD_en(playerid, cmdtext)
SendPlayerMessage(playerid,77,5,200," ");
SendPlayerMessage(playerid,77,5,200,"Ok... you are english");
SendPlayerMessage(playerid,77,5,200,"Leader Admin is ChrystianSandu.");
SendPlayerMessage(playerid,77,5,200,"For cmd (commands): /cmde.");
SendPlayerMessage(playerid,77,5,200,"For rules: /rulee.");
end
function CMD_cmdr(playerid, cmdtext)
SendPlayerMessage(playerid,77,5,200," ");
SendPlayerMessage(playerid,77,5,200,"Comenzi, in romana:");
SendPlayerMessage(playerid,77,5,200,"/suicide - pentru a te sinucide");
SendPlayerMessage(playerid,77,5,200,"/save - pentru a salva jocul (este necesar sa da-ti save)");
SendPlayerMessage(playerid,77,5,200,"/k - urla, b - occ");
end
function CMD_ruler(playerid, cmdtext)
SendPlayerMessage(playerid,77,5,200," ");
SendPlayerMessage(playerid,77,5,200,"Regulamantul, in romana:");
SendPlayerMessage(playerid,77,5,200,"Este interzis: - reclama, - limbajul obscen");
SendPlayerMessage(playerid,77,5,200,"- discutiile homofobe, xenofobe");
SendPlayerMessage(playerid,77,5,200,"- spam");
end
function CMD_rulee(playerid, cmdtext)
SendPlayerMessage(playerid,77,5,200," ");
SendPlayerMessage(playerid,77,5,200,"Rules, in english:");
SendPlayerMessage(playerid,77,5,200,"Is strictly prohibited: - ad, - obscene language");
SendPlayerMessage(playerid,77,5,200,"- discussions homophobic and xenophobic");
SendPlayerMessage(playerid,77,5,200,"- spam");
end
function CMD_cmde(playerid, cmdtext)
SendPlayerMessage(playerid,77,5,200," ");
SendPlayerMessage(playerid,77,5,200,"CMDS::");
SendPlayerMessage(playerid,77,5,200,"/suicide; /save - to save status");
SendPlayerMessage(playerid,77,5,200,"/k - shout");
SendPlayerMessage(playerid,77,5,200,"/b - OCC");
end
--============================================================================================================
function CMD_Register(playerid,params)
local result, password = sscanf(params,"s");
if result == 1 then
local fileRead = io.open(Player[playerid].name..".par","r+");
if fileRead then
SendPlayerMessage(playerid,230,230,230,"An account with this name exists! Login or choose a different name!");
fileRead:close();
else
Player[playerid].password = password;
print(Player[playerid].name.." registered!");
WriteDatabase(playerid);
Player[playerid].loggedIn = 1;
SendPlayerMessage(playerid,230,230,230,"You've completed your registration successfully!");
FreezePlayer(playerid,0);
guiCharacter(playerid);
end
else
SendPlayerMessage(playerid,230,230,230,"Use: /register (password)");
end
end
function CMD_Login(playerid,params)
local result, password = sscanf(params,"s");
if result == 1 then
local file = io.open(Player[playerid].name..".par","r+");
if file then
FreezePlayer(playerid,1);
local tempvar = file:read("*l");
local result, trashName, pass = sscanf(tempvar,"ss");
if result == 1 then
if pass == password then
FreezePlayer(playerid,0);
Player[playerid].password = password;
ReadDatabase(playerid);
print(Player[playerid].name.." logged in!");
SendPlayerMessage(playerid,230,230,230,"You've logged in successfully!");
Player[playerid].loggedIn = 1;
FreezePlayer(playerid,0);
guiCharacter(playerid);
else
SendPlayerMessage(playerid,230,230,230,"The password is not correct!");
end
end
file:close();
else
SendPlayerMessage(playerid,230,230,230,"No data exists for this name. Please register with /register!");
end
else
SendPlayerMessage(playerid,230,230,230,"Use: /login (password)");
end
end
function CMD_ChangePassword(playerid,params)
local result, oldpw, newpw = sscanf(params,"ss");
if result == 1 then
if oldpw == Player[playerid].password then
Player[playerid].password = newpw;
print(Player[playerid].name.." changed his password!");
WriteDatabase(playerid);
SendPlayerMessage(playerid,230,230,230,"You've changed your password!");
else
SendPlayerMessage(playerid,230,230,230,"You didn't enter your old password properly!");
end
else
SendPlayerMessage(playerid,230,230,230,"Use: /changepw (oldpassword) (newpassword)");
end
end
function OnPlayerDisconnect(playerid, reason)
if Player[playerid].loggedIn == 1 then
print(Player[playerid].name.." logged off!");
WriteDatabase(playerid);
Player[playerid].loggedIn = nil;
else
Player[playerid].loggedIn = nil;
end
end
function WriteDatabase(playerid)
local world = GetPlayerWorld(playerid);
local x, y, z = GetPlayerPos(playerid);
local angle = GetPlayerAngle(playerid);
local fatness = GetPlayerFatness(playerid);
local HP = GetPlayerHealth(playerid);
local MaxHP = GetPlayerMaxHealth(playerid);
local Mana = GetPlayerMana(playerid);
local MaxMana = GetPlayerMaxMana(playerid);
local Lvl = GetPlayerLevel(playerid);
local MagLvl = GetPlayerMagicLevel(playerid);
local LP = GetPlayerLearnPoints(playerid);
local XP = GetPlayerExperience(playerid);
local NextXP = GetPlayerExperienceNextLevel(playerid);
local Str = GetPlayerStrength(playerid);
local Dex = GetPlayerDexterity(playerid);
local OneH = GetPlayerSkillWeapon(playerid, 0);
local TwoH = GetPlayerSkillWeapon(playerid, 1);
local Bow = GetPlayerSkillWeapon(playerid, 2);
local Xbow = GetPlayerSkillWeapon(playerid, 3);
local Acro = GetPlayerAcrobatic(playerid);
local equippedMeleeWeapon = GetEquippedMeleeWeapon(playerid);
local equippedRangedWeapon = GetEquippedRangedWeapon(playerid);
local equippedArmor = GetEquippedArmor(playerid);
local class = setPlayerClass(playerid, class);
local fileWrite = io.open(Player[playerid].name..".par", "w+");
fileWrite:write(Player[playerid].name.." "..Player[playerid].password.."\n");
fileWrite:write(world," ",x," ",y," ",z," ",angle,"\n");
fileWrite:write(fatness,"\n");
fileWrite:write(HP," ",MaxHP," ",Mana," ",MaxMana,"\n");
fileWrite:write(Lvl," ",MagLvl," ",LP," ",XP," ",NextXP,"\n");
--fileWrite:write(Str," ",Dex," ",OneH," ",TwoH," ",Bow," ",Xbow," ",class,"\n");
fileWrite:write(Str," ",Dex," ",OneH," ",TwoH," ",Bow," ",Xbow,"\n");
fileWrite:write(Acro,"\n");
fileWrite:write(equippedMeleeWeapon," ",equippedRangedWeapon," ",equippedArmor);
fileWrite:close();
end
function ReadDatabase(playerid)
local fileRead = io.open(Player[playerid].name..".par","r+");
tempvar = fileRead:read("*l"); --name and password, these are global -> unprocessed, this line is read just to jump to line two
tempvar = fileRead:read("*l");
local result, world, x, y, z, angle = sscanf(tempvar,"sdddd");
if result == 1 then
local currentWorld = GetPlayerWorld(playerid);
if currentWorld ~= world then
if world == "ADDON\\ADDONWORLD.ZEN" then
SetPlayerWorld(playerid,"ADDON\\ADDONWORLD.ZEN","ADW_ENTRANCE");
elseif world == "AETEROX_LAGERFEUER.ZEN" then
SetPlayerWorld(playerid,"AETEROX_LAGERFEUER.ZEN","ADW_ENTRANCE");
elseif world == "OLDWORLD\\OLDWORLD.ZEN" then
SetPlayerWorld(playerid,"OLDWORLD\\OLDWORLD.ZEN","START");
elseif world == "NEWWORLD\\NEWWORLD.ZEN" then
SetPlayerWorld(playerid,"NEWWORLD\\NEWWORLD.ZEN","START");
elseif world == "NEWWORLD\\DRAGONISLAND.ZEN" then
SetPlayerWorld(playerid,"NEWWORLD\\DRAGONISLAND.ZEN","SHIP");
end
end
SetPlayerPos(playerid, x, y, z);
SetPlayerAngle(playerid,angle);
end
tempvar = fileRead:read("*l");
local result, fatness = sscanf(tempvar,"d");
if result == 1 then
SetPlayerFatness(playerid,fatness);
end
tempvar = fileRead:read("*l");
local result, HP, MaxHP, Mana, MaxMana = sscanf(tempvar,"dddd");
if result == 1 then
SetPlayerHealth(playerid, HP);
SetPlayerMaxHealth(playerid,MaxHP);
SetPlayerMana(playerid, Mana);
SetPlayerMaxMana(playerid, MaxMana);
end
tempvar = fileRead:read("*l");
local result, Lvl, MagLvl, LP, XP, NextXP = sscanf(tempvar,"ddddd");
if result == 1 then
SetPlayerLevel(playerid, Lvl);
SetPlayerMagicLevel(playerid, MagLvl);
SetPlayerLearnPoints(playerid, LP);
SetPlayerExperience(playerid, XP);
SetPlayerExperienceNextLevel(playerid, NextXP);
end
tempvar = fileRead:read("*l");
local result, Str, Dex, OneH, TwoH, Bow, Xbow, class = sscanf(tempvar,"ddddddd");
if result == 1 then
SetPlayerStrength(playerid, Str);
SetPlayerDexterity(playerid, Dex);
SetPlayerSkillWeapon(playerid, 0, OneH);
SetPlayerSkillWeapon(playerid, 1, TwoH);
SetPlayerSkillWeapon(playerid, 2, Bow);
SetPlayerSkillWeapon(playerid, 3, Xbow);
setPlayerClass(playerid, class);
end
tempvar = fileRead:read("*l");
local result, Acro = sscanf(tempvar,"d");
if result == 1 then
SetPlayerAcrobatic(playerid, Acro);
end
tempvar = fileRead:read("*l");
local result, Melee, Ranged, Armor = sscanf(tempvar,"sss");
if result == 1 then
if MeleeWep ~= "NULL" then
EquipMeleeWeapon(playerid, Melee);
end
if RangWep ~= "NULL" then
EquipRangedWeapon(playerid, Ranged);
end
if Armor ~= "NULL" then
EquipArmor(playerid, Armor);
end
end
fileRead:close();
end
--Classes
function GPlayerClass(playerid, class)
--code
end
function CMD_class(playerid, params)
local result, ppid , clid = sscanf(params, "dd");
if result == 1 then
if IsPlayerAdmin(playerid) == 1 then
if clid == 1 then
Vagabond(ppid);
Player[ppid].class = 1;
SendPlayerMessage(ppid,255,205,0,"Felicitari! Ai fost promovat la: Vagabond!");
elseif clid == 2 then
Cetatean(ppid);
Player[ppid].class = 2;
SendPlayerMessage(ppid,255,205,0,"Felicitari! Ai fost promovat la: Cetatean!");
elseif clid == 3 then
Fire(ppid);
Player[ppid].class = 3;
SendPlayerMessage(ppid,255,205,0,"Felicitari! Ai fost promovat la: Magician de FoC (Fire Mage)");
elseif clid == 4 then
HFire(ppid);
Player[ppid].class = 4;
SendPlayerMessage(ppid,255,205,0,"Felicitari! Ai fost promovat la:Mare magician de FoC (High Fire Mage)");
elseif clid == 4 then
Paladin(ppid);
Player[ppid].class = 4;
SendPlayerMessage(ppid,255,205,0,"Felicitari! Ai fost promovat la: Paladin");
end
else
SendPlayerMessage(ppid,255,205,0,"Nu esti ADMINISTRATOR!");
end
end
end
function setPlayerClass(playerid, class)
if fire == 3 then
Fire(playerid);
elseif water == 2 then
Water(playerid);
elseif paladin == 3 then
Paladin(playerid);
elseif mpolice == 4 then
MPolice(playerid);
elseif king == 5 then
king(playerid);
end
end
function Novice (ppid)
GiveItem(playerid,"ItAr_NOV_L",1);
GiveItem(playerid,"ItMw_RangerStaff_Addon",1);
GiveItem(playerid,"ItRu_TeleportMonastery",1);
GiveItem(playerid,"ItRu_FireBolt",1);
GiveItem(playerid,"ItPo_Health_02",6);
SetPlayerMaxHealth(playerid,350);
SetPlayerHealth(playerid,350);
SetPlayerMaxMana(playerid,450);
SetPlayerMana(playerid,450);
SetPlayerStrength(playerid,35);
SetPlayerDexterity(playerid,35);
SetPlayerSkillWeapon(playerid,15,15);
end
function Fire (ppid)
GiveItem(playerid,"ItMw_1H_Common_01",1);
GiveItem(playerid,"ItAr_KDF_L",1);
GiveItem(playerid,"ITAR_Vlk_L",1);
GiveItem(playerid,"ItRu_TeleportMonastery",1);
GiveItem(playerid,"ItRu_PalHolyBolt",1);
GiveItem(playerid,"ItRu_LightningFlash",1);
GiveItem(playerid,"ItRu_IceCube",1);
GiveItem(playerid,"ItRu_FireBolt",1);
GiveItem(playerid,"ItPo_Health_03",5);
SetPlayerMaxHealth(playerid,550);
SetPlayerHealth(playerid,550);
SetPlayerMaxMana(playerid,750);
SetPlayerMana(playerid,750);
SetPlayerStrength(playerid,35);
SetPlayerDexterity(playerid,35);
SetPlayerSkillWeapon(playerid,15,15);
end
function HFire (ppid)
SetPlayerStrength(playerid,200);
end
function Paladin (ppid)
GiveItem(playerid,"ItRu_PalHolyBolt",1);
GiveItem(playerid,"ItAr_PAl_H",1);
GiveItem(playerid,"ITAR_Vlk_L",1);
GiveItem(playerid,"ItMw_1h_Pal_Sword",1);
GiveItem(playerid,"ItMw_2h_Pal_Sword",1);
GiveItem(playerid,"ItPo_Health_03",5);
SetPlayerMaxHealth(playerid,1050);
SetPlayerHealth(playerid,1000);
SetPlayerMaxMana(playerid,250);
SetPlayerMana(playerid,250);
SetPlayerStrength(playerid,90);
SetPlayerDexterity(playerid,90);
SetPlayerSkillWeapon(playerid,85,85);
end
function MPolice (playerid)
GiveItem(playerid,"ITAR_Mil_L",1);
GiveItem(playerid,"ItMw_ShortSword1",1);
GiveItem(playerid,"ItPo_Health_02",5);
SetPlayerMaxHealth(playerid,650);
SetPlayerHealth(playerid,625);
SetPlayerMaxMana(playerid,45);
SetPlayerMana(playerid,45);
SetPlayerStrength(playerid,50);
SetPlayerDexterity(playerid,50);
SetPlayerSkillWeapon(playerid,65,65);
end
function king (playerid)
GiveItem(playerid,"ItMw_1h_Vlk_Mace",1);
GiveItem(playerid,"ITAR_Governor",1);
GiveItem(playerid,"ITAR_Vlk_M",1);
GiveItem(playerid,"ITAR_Diego",1);
GiveItem(playerid,"ItMw_1h_Vlk_Sword",1);
GiveItem(playerid,"ItPo_Health_03",5);
SetPlayerMaxHealth(playerid,200);
SetPlayerHealth(playerid,200);
SetPlayerMaxMana(playerid,35);
SetPlayerMana(playerid,150);
SetPlayerStrength(playerid,30);
SetPlayerDexterity(playerid,30);
SetPlayerSkillWeapon(playerid,35,35);
end
Comments