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