Üzenetek megjelenítése

Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van.


Témák - Dwight

Oldalak: [1]
1
SA-MP: Szerverfejlesztés / Dwight\'s Room System
« Dátum: 2014. December 31. - 11:35:23 »
Dwight\'s Room System
 
Alap információk:
-Készítő: Én (Dwight)
-Elkészítési idő: ~10 óra
-Sorok száma: ~700
-Szükséges: sscanf.inc, zcmd.inc, dini.inc, illetve Rooms mappa létrehozása a scriptfiles mappában!
-Funkciók: ezen script segítségével IG lehet szobákat készíteni, törölni, mozgatni RCON Adminok számára, az elkészített szobákat a játékosok ki tudják bérelni 1 napra a megadott bérleti díj fejében, a bérlés lemondható, a bérelt szoba nevét a tulajdonos tudja változtatni, az ajtókat lehet nyitni/zárni, melyhez kulcs-rendszer készült, a kulcsok játékosok között átadhatóak, illetve admin paranccsal készíthetőek új kulcsok! A rendszer menti/betölti a szobákat
-Ismert hibák: nincsenek, viszont egy nagy probléma van: a szobák elmentése nagyon lassan történik, szobánként durván 1 másodperc!
Parancsok:
-/createroom [price] - Szoba készítésére szolgál, a pozíciónkra, VW-ünkbe, INT-ünkbe rakja le a szoba ikonját
-/deleteroom [roomid] - Kitörli az adott szobát, ha az ID helyére \'-1\'-et írunk, az összes létező szobát törli
-/moveroom [roomid] - Az adott szoba pozícióját változtatja a jelenlegi pozíciónkra
-/getroominfo [roomid] - Az adott szoba információit kapjuk meg, ha az ID-hez nem írunk semmit, azt a szobát keresi a rendszer, melynek a pickupjában állunk
-/givekey [playerid] [amount] [roomid/roomname] - Egy adott játékosnak adott mennyiségű kulcsot ad egy adott szobához, a szoba ID-jét illetve nevét is érzékeli a rendszer
-/setmoney [playerid] [amount] - A játékos pénzét állíthatjuk be
-/bérel - Azt a szobád béreljük ki, amelynek a pickupjában állunk
-/lemond - Annak a szobának a bérlését mondjuk le, melynek pickupjában állunk
-/belép - Abba a szobába megyünk be, melynek a pickupjában állunk, abban az esetben, ha az ajtó nyitva van
-/kilép - Abból a szobából megyünk ki, melynek az ajtajában állunk, abban az esetben, ha az ajtó nyitva van
-/szobanév [roomname] - Annak a szobának a nevét módosítjuk, melynek a pickupjában állunk, abban az esetben, ha a szoba a tulajdonunkban áll
-/ajtó - Annak a szobának az ajtaját nyithatjuk ki / zárhatjuk be, melynek a pickupjában állunk, vagy belülről az ajtó közelében vagyunk, abban az esetben, ha van kulcsunk az adott szobához
-/kulcsok - Megtekinthetjük a jelenlegi kulcsainkat
-/kulcsad [playerid] [amount] [roomid/roomname] - Átadhatunk más játékosnak adott mennyiségű kulcsot az adott szobához, a rendszer érzékeli a szoba nevét és az ID-jét is
-/információk - Egy bérelhető szoba információit nézhetjük meg
Kód:
 
#include <a_samp>
#include <dini>
#include <zcmd>
#include <sscanf>
// alap definíciók
#define MAX_ROOMS       1000
#define MAX_ROOM_NAME   32
#define MIN_ROOM_PRICE  25  //egy szobának legalább ennyibe kell kerülnie
#define DAY             86400
//dialogok
#define DIALOG_RENTLIST      1337
#define DIALOG_KEYLIST      1338
#define DIALOG_INFO         1339
forward RefreshRemainingTime(roomid);
enum RoomInfo
{
rCreated,
rPrice,
rName[MAX_ROOM_NAME],
rOwner[MAX_PLAYER_NAME],
rSold,
rRemaining,
Float:rBeX,
Float:rBeY,
Float:rBeZ,
Float:rKiX,
Float:rKiY,
Float:rKiZ,
Float:rKiA,
rVW,
rINT,
rPickupID,
rPickup,
rDoor,
}
new rInfo[MAX_ROOMS][RoomInfo];
new rTimer[MAX_ROOMS];
new InRoom[MAX_PLAYERS];
new KeyList[MAX_PLAYERS][MAX_ROOMS];
public OnFilterScriptInit()
{
print(\"# Dwight\'s Room System #\");
new str[24];
for(new i; i < MAX_ROOMS; i++)
{
    if(rInfo[rCreated] == 1) continue;
else
{
    new File[24];
    format(File, sizeof(File), \"Rooms/%d.ini\", i);
    if(dini_Exists(File))
    {
      LoadRoom(i);
        for(new x; x < MAX_PLAYERS; x++)
        {
            if(!IsPlayerConnected(x)) continue;
            if(!Egyezik(Name(x), rInfo[rOwner])) continue;
            GivePlayerKey(x, i, 1);
        }
      rInfo[rPickup] = CreatePickup(rInfo[rPickupID], 1, rInfo[rBeX], rInfo[rBeY], rInfo[rBeZ], rInfo[rVW]);
      format(str, sizeof(str), \"# %d. szoba betöltve!\", i);
      print(str);
      if(rInfo[rSold] != 0 ) rTimer = SetTimerEx(\"RefreshRemainingTime\", 1000, true, \"i\", i);
   } else { continue; }
}
}
return 1;
}
public OnFilterScriptExit()
{
new str[24];
for(new i; i < MAX_ROOMS; i++)
{
    if(rInfo[rCreated] == 0) continue;
else
{
   SaveRoom(i);
   DestroyPickup(rInfo[rPickup]);
   format(str, sizeof(str), \"# %d. szoba elmentve!\", i);
   print(str);
}
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_RENTLIST)
{
    if(response) return 1;
}
if(dialogid == DIALOG_KEYLIST)
{
    if(response)
    {
        switch(listitem)
        {
            default: ShowKeys(playerid);
        }
    }
}
return 1;
}
public RefreshRemainingTime(roomid)
{
rInfo[roomid][rRemaining] --;
if(rInfo[roomid][rRemaining] == 0)
{
    new str[64];
    KillTimer(rTimer[roomid]);
    format(str, sizeof(str), \"# %d. szoba bérlése %s tulajdonában lejárt!\", roomid, rInfo[roomid][rOwner]);
    DestroyPickup(rInfo[roomid][rPickup]);
    rInfo[roomid][rPickupID] = 1273;
    rInfo[roomid][rPickup] = CreatePickup(1273, 1, rInfo[roomid][rBeX], rInfo[roomid][rBeY], rInfo[roomid][rBeZ],rInfo[roomid][rVW]);
    format(rInfo[roomid][rName], MAX_ROOM_NAME, \"%03d. szoba\", roomid);
    format(rInfo[roomid][rOwner], MAX_PLAYER_NAME, \"\");
    rInfo[roomid][rDoor] = 1;
    rInfo[roomid][rSold] = 0;
RconAdminMSG(str);
}
return 1;
}
//alap parancsok
CMD:help(playerid, params[])
{
SendClientMessage(playerid, -1, \"Parancsok: /bérel, /lemond, /belép, /kilép, /szobanév, /ajtó, /kulcsok, /kulcsad, /információk\");
if(IsPlayerAdmin(playerid))
{
SendClientMessage(playerid, -1, \"Admin: /createroom, /deleteroom, /moveroom, /getroominfo, /givekey, /setmoney\");
return 1;
}
return 1;
}
CMD:ajto(playerid, params[])
{
new roomid_int = IsPlayerInRangeOfRoomInt(playerid, 0.5), roomid = IsPlayerInRangeOfRoom(playerid, 0.5);
if(roomid_int == -1 && roomid == -1) return SendClientMessage(playerid, -1, \"Nincs szoba a közeledben!\");
if(roomid_int != -1)
{
if(GetPlayerKey(playerid, roomid_int) <= 0) return SendClientMessage(playerid, -1, \"Nincs kulcsod ehhez a szobához!\");
if(rInfo[roomid_int][rDoor] == 0)
{
    rInfo[roomid_int][rDoor] = 1;
    SendClientMessage(playerid, -1, \"Bezártad a szoba ajtaját!\");
} else {
    rInfo[roomid_int][rDoor] = 0;
    SendClientMessage(playerid, -1, \"Kinyitottad a szoba ajtaját!\");
}
return 1;
}
if(roomid != -1)
{
if(GetPlayerKey(playerid, roomid) <= 0) return SendClientMessage(playerid, -1, \"Nincs kulcsod ehhez a szobához!\");
if(rInfo[roomid][rDoor] == 0)
{
    rInfo[roomid][rDoor] = 1;
    SendClientMessage(playerid, -1, \"Bezártad a szoba ajtaját!\");
} else {
    rInfo[roomid][rDoor] = 0;
    SendClientMessage(playerid, -1, \"Kinyitottad a szoba ajtaját!\");
}
return 1;
}
return 1;
}
CMD:kulcsok(playerid, params[])
{
ShowKeys(playerid);
return 1;
}
CMD:belep(playerid, params[])
{
new roomid = IsPlayerInRangeOfRoom(playerid, 0.5);
if(roomid == -1) return SendClientMessage(playerid, -1, \"Nincs szoba a közeledben!\");
if(rInfo[roomid][rDoor] == 1) return SendClientMessage(playerid, -1, \"Az ajtók zárva vannak!\");
SetPlayerInterior(playerid, 2);
SetPlayerVirtualWorld(playerid, roomid);
SetPlayerPos(playerid, rInfo[roomid][rKiX], rInfo[roomid][rKiY], rInfo[roomid][rKiZ]);
SetPlayerFacingAngle(playerid, rInfo[roomid][rKiA]);
InRoom[playerid] ++;
return 1;
}
CMD:kilep(playerid, params[])
{
if(InRoom[playerid] == 0) return SendClientMessage(playerid, -1, \"Nem vagy szobában!\");
new roomid = GetPlayerVirtualWorld(playerid);
if(IsPlayerInRangeOfPoint(playerid, 0.5, rInfo[roomid][rKiX], rInfo[roomid][rKiY], rInfo[roomid][rKiZ]))
{
    if(rInfo[roomid][rDoor] == 1) return SendClientMessage(playerid, -1, \"Az ajtók zárva vannak!\");
    SetPlayerPos(playerid, rInfo[roomid][rBeX], rInfo[roomid][rBeY], rInfo[roomid][rBeZ]);
    SetPlayerInterior(playerid, rInfo[roomid][rINT]);
    SetPlayerVirtualWorld(playerid, rInfo[roomid][rVW]);
    InRoom[playerid] --;
} else return SendClientMessage(playerid, -1, \"Nincs ajtó a közeledben!\");
return 1;
}
CMD:kulcsad(playerid, params[])
{
new id, roomname[MAX_ROOM_NAME], amount, str[96], roomid;
if(sscanf(params, \"uds\", id, amount, roomname)) return SendClientMessage(playerid, -1, \"Használat: /kulcsad [játékos] [mennyiség] [szoba neve/id]\");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, \"Ismeretlen játékos!\");
if(id == playerid) return SendClientMessage(playerid, -1, \"Magadnak nem adhatsz át kulcsot!\");
if(!IsNumeric(roomname) && GetRoomIDFromName(roomname) == -1) return SendClientMessage(playerid, -1, \"Nem létezik ilyen szoba!\");
if(!IsNumeric(roomname) && GetPlayerKey(playerid, GetRoomIDFromName(roomname) < amount)) return SendClientMessage(playerid, -1, \"Nincs ennyi kulcsod ehhez a szobához!\");
if(IsNumeric(roomname))
{
    roomid = strval(roomname);
    if(rInfo[roomid][rCreated] == 0) return SendClientMessage(playerid, -1, \"Nem létezik ilyen szoba!\");
if(GetPlayerKey(playerid, roomid) < amount) return SendClientMessage(playerid, -1, \"Nincs ennyi kulcsod ehhez a szobához!\");
GivePlayerKey(id, roomid, amount);
GivePlayerKey(playerid, roomid, -amount);
format(str, sizeof(str), \"# %s átadott %d kulcsot a(z) \'%s\'(%d) szobához %s számára!\", Name(playerid), amount, GetRoomNameFromID(roomid), roomid, Name(id));
RconAdminMSG(str);
format(str, sizeof(str), \"Átadtál %d kulcsot a(z) \'%s\'(%d) szobához %s számára! \", amount, GetRoomNameFromID(roomid), roomid, Name(id));
SendClientMessage(playerid, -1, str);
format(str, sizeof(str), \"%s ádatott neked %d kulcsot a(z) \'%s\'(%d) szobához! \", Name(playerid), amount, GetRoomNameFromID(roomid), roomid);
SendClientMessage(id, -1, str);
} else {
GivePlayerKey(id, GetRoomIDFromName(roomname), amount);
GivePlayerKey(playerid, GetRoomIDFromName(roomname), -amount);
format(str, sizeof(str), \"# %s adott %d kulcsot a(z) \'%s\'(%d) szobához %s számára!\", Name(playerid), amount, roomname, GetRoomIDFromName(roomname), Name(id));
RconAdminMSG(str);
format(str, sizeof(str), \"Átadtál %d kulcsot a(z) \'%s\'(%d) szobához %s számára! \", amount, roomname, GetRoomIDFromName(roomname), Name(id));
SendClientMessage(playerid, -1, str);
format(str, sizeof(str), \"%s ádatott neked %d kulcsot a(z) \'%s\'(%d) szobához! \", Name(playerid), amount, roomname, GetRoomIDFromName(roomname));
SendClientMessage(id, -1, str);
}
return 1;
}
CMD:berel(playerid, params[])
{
new str[64], roomid = IsPlayerInRangeOfRoom(playerid, 0.5);
if(roomid == -1) return SendClientMessage(playerid, -1, \"Nincs szoba a közeledben!\");
if(rInfo[roomid][rSold] == 1) return SendClientMessage(playerid, -1, \"Ezt a szobát már bérlik!\");
if(GetPlayerMoney(playerid) < rInfo[roomid][rPrice]) return SendClientMessage(playerid, -1, \"Nincs elég pénzed a szoba kibérléséhez!\");
rInfo[roomid][rPickupID] = 1272;
DestroyPickup(rInfo[roomid][rPickup]);
rInfo[roomid][rPickup] = CreatePickup(1272, 1, rInfo[roomid][rBeX], rInfo[roomid][rBeY], rInfo[roomid][rBeZ], rInfo[roomid][rVW]);
rInfo[roomid][rSold] = 1;
format(rInfo[roomid][rOwner], MAX_PLAYER_NAME, \"%s\", Name(playerid));
rInfo[roomid][rRemaining] = DAY;
rTimer[roomid] = SetTimerEx(\"RefreshRemainingTime\", 1000, true, \"i\", roomid);
format(str, sizeof(str), \"%s kibérelve 1 napra! Bérlés: $%s\", rInfo[roomid][rName], NumberConvert(rInfo[roomid][rPrice]));
SendClientMessage(playerid, -1, str);
GivePlayerMoney(playerid, -rInfo[roomid][rPrice]);
GivePlayerKey(playerid, roomid, 1);
return 1;
}
CMD:lemond(playerid, params[])
{
new roomid = IsPlayerInRangeOfRoom(playerid, 0.5);
if(roomid == -1) return SendClientMessage(playerid, -1, \"Nincs szoba a közeledben!\");
if(!Egyezik(rInfo[roomid][rOwner], Name(playerid))) return SendClientMessage(playerid, -1, \"Ez nem a te szobád!\");
KillTimer(rTimer[roomid]);
DestroyPickup(rInfo[roomid][rPickup]);
rInfo[roomid][rPickupID] = 1273;
rInfo[roomid][rPickup] = CreatePickup(1273, 1, rInfo[roomid][rBeX], rInfo[roomid][rBeY], rInfo[roomid][rBeZ],rInfo[roomid][rVW]);
format(rInfo[roomid][rName], MAX_ROOM_NAME, \"%03d. szoba\", roomid);
format(rInfo[roomid][rOwner], MAX_PLAYER_NAME, \"\");
rInfo[roomid][rDoor] = 1;
rInfo[roomid][rSold] = 0;
for(new i; i < MAX_PLAYERS; i++)
{
    if(!IsPlayerConnected(i)) continue;
    if(GetPlayerKey(playerid, roomid) == 0) continue;
GivePlayerKey(playerid, roomid, -GetPlayerKey(playerid, roomid));
}
SendClientMessage(playerid, -1, \"Sikeresen lemondtad a szoba bérlését!\");
return 1;
}
CMD:informaciok(playerid, params[])
{
new roomid = IsPlayerInRangeOfRoom(playerid, 0.5), str[96];
if(roomid == -1) return SendClientMessage(playerid, -1, \"Nincs szoba a közeledben!\");
if(rInfo[roomid][rSold] == 1) return SendClientMessage(playerid, -1, \"Ezt a szobát már bérlik!\");
format(str, sizeof(str), \"Szoba neve: %s\\nBérleti díja: $%s / nap\", rInfo[roomid][rName], NumberConvert(rInfo[roomid][rPrice]));
ShowPlayerDialog(playerid, DIALOG_INFO, DIALOG_STYLE_MSGBOX, \"Információk\", str, \"Oké\", \"\");
return 1;
}
CMD:szobanev(playerid, params[])
{
new roomid = IsPlayerInRangeOfRoom(playerid, 0.5), roomname[MAX_ROOM_NAME], str[64];
if(roomid == -1) return SendClientMessage(playerid, -1, \"Nincs szoba a közeledben!\");
if(!Egyezik(rInfo[roomid][rOwner], Name(playerid))) return SendClientMessage(playerid, -1, \"Ez nem a te szobád!\");
if(sscanf(params, \"s\", roomname)) return SendClientMessage(playerid, -1, \"Használat: /szobanév [új név]\");
if(strlen(roomname) > MAX_ROOM_NAME) return SendClientMessage(playerid, -1, \"Túl hosszú név!\");
format(rInfo[roomid][rName], MAX_ROOM_NAME, \"%s\", roomname);
format(str, sizeof(str), \"Sikeresen átnevezted a szobádat! Új név: %s\", roomname);
SendClientMessage(playerid, -1, str);
return 1;
}
//admin parancsok
CMD:givekey(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, \"Nem vagy admin!\");
new id, roomname[MAX_ROOM_NAME], amount, str[96], roomid;
if(sscanf(params, \"uds\", id, amount, roomname)) return SendClientMessage(playerid, -1, \"Használat: /givekey [játékos] [mennyiség] [szoba neve/id]\");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, \"Ismeretlen játékos!\");
if(!IsNumeric(roomname) && GetRoomIDFromName(roomname) == -1) return SendClientMessage(playerid, -1, \"Nem létezik ilyen szoba!\");
if(IsNumeric(roomname))
{
    roomid = strval(roomname);
    if(rInfo[roomid][rCreated] == 0) return SendClientMessage(playerid, -1, \"Nem létezik ilyen szoba!\");
GivePlayerKey(playerid, roomid, amount);
format(str, sizeof(str), \"# %s adott %d kulcsot a(z) \'%s\'(%d) szobához %s számára!\", Name(playerid), amount, GetRoomNameFromID(roomid), roomid, Name(id));
RconAdminMSG(str);
} else {
GivePlayerKey(playerid, GetRoomIDFromName(roomname), amount);
format(str, sizeof(str), \"# %s adott %d kulcsot a(z) \'%s\'(%d) szobához %s számára!\", Name(playerid), amount, roomname, GetRoomIDFromName(roomname), Name(id));
RconAdminMSG(str);
}
return 1;
}
CMD:setmoney(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, \"Nem vagy admin!\");
new id, amount, str[64];
if(sscanf(params, \"ud\", id, amount)) return SendClientMessage(playerid, -1, \"Használat: /setmoney [játékos] [összeg]\");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, \"Ismeretlen játékos!\");
format(str, sizeof(str), \"# %s beállította %s pénzét! Összeg: $%s\", Name(playerid), Name(id), NumberConvert(amount));
RconAdminMSG(str);
GivePlayerMoney(id, amount-GetPlayerMoney(id));
return 1;
}
CMD:moveroom(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, \"Nem vagy admin!\");
new str[64], roomid, Float:X, Float:Y, Float:Z, playerVW = GetPlayerVirtualWorld(playerid), playerINT = GetPlayerInterior(playerid);
if(sscanf(params, \"d\", roomid)) return SendClientMessage(playerid, -1, \"Használat: /moveroom [id]\");
if(rInfo[roomid][rCreated] == 0) return SendClientMessage(playerid, -1, \"Nincs ilyen szoba!\");
GetPlayerPos(playerid, X, Y, Z);
rInfo[roomid][rBeX] = X;
rInfo[roomid][rBeY] = Y;
rInfo[roomid][rBeZ] = Z;
rInfo[roomid][rVW] = playerVW;
rInfo[roomid][rINT] = playerINT;
DestroyPickup(rInfo[roomid][rPickup]);
rInfo[roomid][rPickup] = CreatePickup(rInfo[roomid][rPickupID], 1, rInfo[roomid][rBeX], rInfo[roomid][rBeY], rInfo[roomid][rBeZ], rInfo[roomid][rVW]);
format(str, sizeof(str), \"# %d. szoba áthelyezve %s által!\", roomid, Name(playerid));
RconAdminMSG(str);
return 1;
}
CMD:createroom(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, \"Nem vagy admin!\");
new price, Float:X, Float:Y, Float:Z, str[32];
if(sscanf(params, \"d\", price)) return SendClientMessage(playerid, -1, \"Használat: /createroom [ár]\");
if(price < MIN_ROOM_PRICE)
{
    format(str, sizeof(str), \"A szoba ára minimum $%s!\", NumberConvert(MIN_ROOM_PRICE));
    SendClientMessage(playerid, -1, str);
    return 1;
}
GetPlayerPos(playerid, X, Y, Z);
CreateRoom(playerid, price, X, Y, Z);
return 1;
}
CMD:deleteroom(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, \"Nem vagy admin!\");
new roomid, str[64];
if(sscanf(params, \"d\", roomid)) return SendClientMessage(playerid, -1, \"Használat: /deleteroom [id]\");
if(roomid == -1)
{
    for(new i; i < MAX_ROOMS; i++)
    {
        if(rInfo[rCreated] == 0) continue;
        else
        {
            DeleteRoom(i);
        }
    }
    return format(str, sizeof(str), \"# Minden szoba törölve %s által!\", Name(playerid)), RconAdminMSG(str);
}
else if(rInfo[roomid][rCreated] == 0) return SendClientMessage(playerid, -1, \"Nincs ilyen szoba!\");
DeleteRoom(roomid);
format(str, sizeof(str), \"# %d. szoba törölve %s által!\", roomid, Name(playerid));
RconAdminMSG(str);
return 1;
}
CMD:getroominfo(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, \"Nem vagy admin!\");
new roomid, str[256];
if(!sscanf(params, \"d\", roomid))
{
if(rInfo[roomid][rCreated] == 0) return SendClientMessage(playerid, -1, \"Nincs ilyen szoba!\");
format(str, sizeof(str), \"ID: %d | Ár: $%s | Név: %s | Tulaj: %s | Bérelve: %d | Idő: %d\", roomid, NumberConvert(rInfo[roomid][rPrice]), rInfo[roomid][rName], rInfo[roomid][rOwner], rInfo[roomid][rSold], rInfo[roomid][rRemaining]);
SendClientMessage(playerid, -1, str);
format(str, sizeof(str), \"X: %f | Y: %f | Z: %f | VW: %d | INT: %d | Ajtó: %d\", rInfo[roomid][rBeX], rInfo[roomid][rBeY], rInfo[roomid][rBeZ], rInfo[roomid][rVW], rInfo[roomid][rINT], rInfo[roomid][rDoor]);
SendClientMessage(playerid, -1, str);
} else {
roomid = IsPlayerInRangeOfRoom(playerid, 0.5);
if(roomid == -1) return SendClientMessage(playerid, -1, \"Nincs szoba a közeledben!\");
format(str, sizeof(str), \"ID: %d | Ár: $%s | Név: %s | Tulaj: %s | Bérelve: %d | Idő: %d\", roomid, NumberConvert(rInfo[roomid][rPrice]), rInfo[roomid][rName], rInfo[roomid][rOwner], rInfo[roomid][rSold], rInfo[roomid][rRemaining]);
SendClientMessage(playerid, -1, str);
format(str, sizeof(str), \"X: %f | Y: %f | Z: %f | VW: %d | INT: %d | Ajtó: %d\", rInfo[roomid][rBeX], rInfo[roomid][rBeY], rInfo[roomid][rBeZ], rInfo[roomid][rVW], rInfo[roomid][rINT], rInfo[roomid][rDoor]);
SendClientMessage(playerid, -1, str);
}
return 1;
}
//függvények
stock CreateRoom(playerid, price, Float:X, Float:Y, Float:Z)
{
new roomid, str[64], File[16];
for(new i = 1; i < MAX_ROOMS; i++)
{
    if(rInfo[rCreated] == 1) continue;
    else
    {
        roomid = i;
        break;
    }
}
rInfo[roomid][rPickup] = CreatePickup(1273, 1, X, Y, Z, GetPlayerVirtualWorld(playerid));
rInfo[roomid][rCreated] = 1;
rInfo[roomid][rPrice] = price;
format(rInfo[roomid][rName], MAX_ROOM_NAME, \"%03d. szoba\", roomid);
rInfo[roomid][rSold] = 0;
rInfo[roomid][rRemaining] = 0;
rInfo[roomid][rBeX] = X;
rInfo[roomid][rBeY] = Y;
rInfo[roomid][rBeZ] = Z;
rInfo[roomid][rKiX] = 266.8930;
rInfo[roomid][rKiY] = 304.8675;
rInfo[roomid][rKiZ] = 999.1484;
rInfo[roomid][rKiA] = 265.8174;
rInfo[roomid][rVW] = GetPlayerVirtualWorld(playerid);
rInfo[roomid][rINT] = GetPlayerInterior(playerid);
rInfo[roomid][rPickupID] = 1273;
rInfo[roomid][rDoor] = 1;
format(str, sizeof(str), \"# %d. szoba elkészítve! Ár: $%s | Admin: %s\", roomid, NumberConvert(price), Name(playerid));
RconAdminMSG(str);
format(File, sizeof(File), \"Rooms/%d.ini\", roomid);
dini_Create(File);
return 1;
}
stock DeleteRoom(roomid)
{
new File[16], str[24];
format(File, sizeof(File), \"Rooms/%d.ini\", roomid);
if(dini_Exists(File))
{
    dini_Remove(File);
    rInfo[roomid][rCreated] = 0;
    DestroyPickup(rInfo[roomid][rPickup]);
    format(str, sizeof(str), \"# %d. szoba törölve!\", roomid);
if(rInfo[roomid][rRemaining] > 0) KillTimer(rTimer[roomid]);
    print(str);
}
return 1;
}
stock SaveRoom(roomid)
{
new File[16], str[32];
format(File, sizeof(File), \"Rooms/%d.ini\", roomid);
if(dini_Exists(File))
{
    dini_IntSet(File, \"Created\", rInfo[roomid][rCreated]);
    dini_IntSet(File, \"Price\", rInfo[roomid][rPrice]);
    dini_Set(File, \"Name\", rInfo[roomid][rName]);
    dini_Set(File, \"Owner\", rInfo[roomid][rOwner]);
    dini_IntSet(File, \"Sold\", rInfo[roomid][rSold]);
    dini_IntSet(File, \"Remaining\", rInfo[roomid][rRemaining]);
    dini_FloatSet(File, \"BeX\", rInfo[roomid][rBeX]);
    dini_FloatSet(File, \"BeY\", rInfo[roomid][rBeY]);
    dini_FloatSet(File, \"BeZ\", rInfo[roomid][rBeZ]);
    dini_FloatSet(File, \"KiX\", rInfo[roomid][rKiX]);
    dini_FloatSet(File, \"KiY\", rInfo[roomid][rKiY]);
    dini_FloatSet(File, \"KiZ\", rInfo[roomid][rKiZ]);
    dini_FloatSet(File, \"KiA\", rInfo[roomid][rKiA]);
    dini_IntSet(File, \"VW\", rInfo[roomid][rVW]);
    dini_IntSet(File, \"INT\", rInfo[roomid][rINT]);
    dini_IntSet(File, \"PickupID\", rInfo[roomid][rPickupID]);
    dini_IntSet(File, \"Pickup\", rInfo[roomid][rPickup]);
    dini_IntSet(File, \"Door\", rInfo[roomid][rDoor]);
    format(str, sizeof(str), \"# %d. szoba elmentve!\", roomid);
    RconAdminMSG(str);
}
return 1;
}
stock LoadRoom(roomid)
{
new File[16], str[32];
format(File, sizeof(File), \"Rooms/%d.ini\", roomid);
if(dini_Exists(File))
{
    rInfo[roomid][rCreated] = dini_Int(File, \"Created\");
    rInfo[roomid][rPrice] = dini_Int(File, \"Price\");
    format(rInfo[roomid][rName], MAX_ROOM_NAME, \"%s\", dini_Get(File, \"Name\"));
    format(rInfo[roomid][rOwner], MAX_PLAYER_NAME, \"%s\", dini_Get(File, \"Owner\"));
    rInfo[roomid][rSold] = dini_Int(File, \"Sold\");
    rInfo[roomid][rRemaining] = dini_Int(File, \"Remaining\");
    rInfo[roomid][rBeX] = dini_Float(File, \"BeX\");
    rInfo[roomid][rBeY] = dini_Float(File, \"BeY\");
    rInfo[roomid][rBeZ] = dini_Float(File, \"BeZ\");
    rInfo[roomid][rKiX] = dini_Float(File, \"KiX\");
    rInfo[roomid][rKiY] = dini_Float(File, \"KiY\");
    rInfo[roomid][rKiZ] = dini_Float(File, \"KiZ\");
    rInfo[roomid][rKiA] = dini_Float(File, \"KiA\");
    rInfo[roomid][rVW] = dini_Int(File, \"VW\");
    rInfo[roomid][rINT] = dini_Int(File, \"INT\");
    rInfo[roomid][rPickupID] = dini_Int(File, \"PickupID\");
    rInfo[roomid][rPickup] = dini_Int(File, \"Pickup\");
    rInfo[roomid][rDoor] = dini_Int(File, \"Door\");
    format(str, sizeof(str), \"# %d. szoba betöltve!\", roomid);
    RconAdminMSG(str);
}
return 1;
}
stock RconAdminMSG(const msg[])
{
for(new i; i < MAX_PLAYERS; i++)
{
    if(!IsPlayerAdmin(i)) continue;
    SendClientMessage(i, -1, msg);
}
return 1;
}
stock Name(playerid)
{
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
return pName;
}
stock IsPlayerInRangeOfRoom(playerid, Float:range)
{
new Float:X, Float:Y, Float:Z, playerVW = GetPlayerVirtualWorld(playerid), playerINT = GetPlayerInterior(playerid), roomid = -1;
GetPlayerPos(playerid, X, Y, Z);
for(new i; i < MAX_ROOMS; i++)
{
    if(rInfo[rCreated] == 0) continue;
    if(IsPlayerInRangeOfPoint(playerid, range, rInfo[rBeX], rInfo[rBeY], rInfo[rBeZ]) && playerVW == rInfo[rVW] && playerINT == rInfo[rINT])
    {
        roomid = i;
        break;
    }
   
}
return roomid;
}
stock IsPlayerInRangeOfRoomInt(playerid, Float:range)
{
new Float:X, Float:Y, Float:Z, roomid = -1;
GetPlayerPos(playerid, X, Y, Z);
for(new i; i < MAX_ROOMS; i++)
{
    if(rInfo[rCreated] == 0) continue;
    if(IsPlayerInRangeOfPoint(playerid, range, rInfo[rKiX], rInfo[rKiY], rInfo[rKiZ]))
    {
        roomid = i;
        break;
    }
}
return roomid;
}
stock Egyezik(comp[], with[])
{
new LenghtComp = strlen(comp);
new LenghtWith = strlen(with);
new Character;
if( LenghtComp != LenghtWith ) return false;
for( new i; i < LenghtComp; i++ )
{
    if( comp == with )
    {
        Character++;
}
}
if( LenghtComp == Character ) return true;
return false;
}
stock NumberConvert( number )
{
new str[64];
format( str, 64, \"%d\", number );
if( number >= 1000 && number < 10000 )
{
strins( str, \",\", 1, sizeof(str) );
}
else if( number >= 10000 && number < 100000 )
{
strins( str, \",\", 2, sizeof(str) );
}
else if( number >= 100000 && number < 1000000 )
{
strins( str, \",\", 3, sizeof(str) );
}
else if( number >= 1000000 && number < 10000000 )
{
strins( str, \",\", 4, sizeof(str) );
strins( str, \",\", 1, sizeof(str) );
}
else if( number >= 10000000 && number < 100000000 )
{
strins( str, \",\", 5, sizeof(str) );
strins( str, \",\", 2, sizeof(str) );
}
else if( number >= 100000000 && number < 2000000000 )
{
strins( str, \",\", 6, sizeof(str) );
strins( str, \",\", 3, sizeof(str) );
strins( str, \",\", 1, sizeof(str) );
}
return str;
}
stock IsNumeric(const string[])
{
    for (new i = 0, j = strlen(string); i < j; i++)
    {
        if (string > \'9\' || string < \'0\') return 0;
    }
    return 1;
}
stock GetPlayerKey(playerid, roomid)
{
new amount = 0;
amount = KeyList[playerid][roomid];
return amount;
}
stock GivePlayerKey(playerid, roomid, amount)
{
KeyList[playerid][roomid] += amount;
return 1;
}
stock GetRoomNameFromID(roomid)
{
new roomname[MAX_ROOM_NAME];
format(roomname, MAX_ROOM_NAME, \"%s\", rInfo[roomid][rName]);
return roomname;
}
stock GetRoomIDFromName(name[MAX_ROOM_NAME])
{
new roomid = -1;
for(new i; i < MAX_ROOMS; i++)
{
    if(rInfo[rCreated] == 0) continue;
if(!Egyezik(rInfo[rName], name)) continue;
else
{
    roomid = i;
    break;
}
}
return roomid;
}
stock ShowKeys(playerid)
{
new keyList[1024];
for(new i; i < MAX_ROOMS; i++)
{
    if(rInfo[rCreated] == 0) continue;
    if(KeyList[playerid] == 0) continue;
    format(keyList, sizeof(keyList), \"%s\\n%d\\t\\t%s [#%d]\", keyList, KeyList[playerid], rInfo[rName], i);
}
if(strlen(keyList) == 0) return SendClientMessage(playerid, -1, \"Nincsenek kulcsaid!\");
strins(keyList, \"{0091FF}Mennyiség\\tNév\", 0);
ShowPlayerDialog(playerid, DIALOG_KEYLIST, DIALOG_STYLE_LIST, \"{FFFFFF}Kulcsok\", keyList, \"Oké\", \"Bezárás\");
return 1;
}

Oldalak: [1]
SimplePortal 2.3.7 © 2008-2024, SimplePortal