Szerző Téma: Rupert\'s house system  (Megtekintve 4288 alkalommal)

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
Rupert\'s house system
« Dátum: 2012. december 13. - 21:09:50 »
+9 Show voters

Rupert\'s house system
v1.0
 

Be szeretném mutatni egyik kedvenc scriptemet, amit most nyilvánosságra hozok; ez a házrendszerem.
Szükséges függvénykönyvtárak a futtatáshoz:
 

  • a_samp


  • dini


  • dutils


  • sscanf2


  • zcmd


Szükséges plugin: sscanf
Szükséges mappák a \"scriptfiles\" mappán belül: \'Hazak\'
A parancsok (csak adminok használhatják):
 

  • /haz - Létrehoz egy házat. Két paraméter KELL: [iD] és [stílus]. Az ID nagyon fontos! Nézd meg a \"Haz\" mappában, hogy létezik-e az ID, avagy sem. Stílus háromféle lehet: 1 - lepukkant ház; 2 - átlagos ház; 3 - luxus ház. Mindegyiknek más az interiorja, illetve ára.


  • /haztorol - A közeledben lévõ házat törli.


 
Maximum 500 ház lehet, de ezt át lehet állítani a scripten belül.
A ház ajtajában, ha megnyomod az ALT-ot, három lehetõség van:
 

  • ha a ház a tiéd: be tudod zárni/ki tudod nyitni az ajtót; be tudsz menni, illetve ki tudsz jönni; eladhatod a házat.


  • ha nem a tiéd, és másé: megpróbálhatsz bemenni az ajtón; ha zárva van az ajtó, természetesen nem fog sikerülni.


  • ha senkié: megveheted a házat, ha van elég pénzed rá.


Minden játékosnak korlátlan háza lehet!
Letöltés: http://www.solidfiles.com/d/ebfa165563/
Videó:
http://www.youtube.com/watch?v=ulhk6MH4-Xg&feature=youtu.be
Képek:
[hs width=300 height=300]http://kepfeltoltes.hu/121213/820354195sa-mp-008_www.kepfeltoltes.hu_.png[/hs]
[hs width=300 height=300]http://kepfeltoltes.hu/121213/1161592360sa-mp-009_www.kepfeltoltes.hu_.png[/hs]
[hs width=300 height=300]http://kepfeltoltes.hu/121213/770814429sa-mp-011_www.kepfeltoltes.hu_.png[/hs]
Kód:
 

/*
               KÉSZÍTETTE RUPERT! KÉRLEK, NE TÖRÖLD KI A NEVEMET MEGEMLÍTÕ ÜZENETET!
*/
#include <a_samp>
#include <dini>
#include <dutils>
#include <dudb>
#include <sscanf2>
#include <zcmd>
// SZÍNEK
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xff0000AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_GRREN 0x00ff2bAA
#define COLOR_LORANGE 0xebbf3bAA
#define SCM SendClientMessage
#define pressed(%0)\\
        (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
// DIALOGOK
#define hazikoo 50
#define hazikoo2 60
#define hazikoo3 70
#define hazikoo4 80
#define hazikoo5 90
#define MAX_HOUSES 500
#pragma unused ret_memcpy
// HÁZ ENUM
enum House
{
ID,
style,
Owner[24],
Float:X,
Float:Y,
Float:Z,
Ar,
Float:kX,
Float:kY,
Float:kZ,
interior,
nyitva
}
new Text3D:haztext2[MAX_HOUSES];
new Text3D:haztext[MAX_HOUSES];
new stri[256];
new hInfo[MAX_HOUSES][House];
new hazak;
new hazban[MAX_PLAYERS];
new mhazban[MAX_PLAYERS];
new Float:kx[MAX_PLAYERS];
new Float:ky[MAX_PLAYERS];
new Float:kz[MAX_PLAYERS];
bool:IsPlayerHaveHazkulcs(playerid, hazid)
{
if(strcmp(pName(playerid), hInfo[hazid][Owner], true) == 0) return true;
    return false;
}
CMD:haztorol(playerid, params[])
{
new hazacska;
hazacska = MelyikHaz(playerid);
if(!IsPlayerAdmin(playerid)) return SCM(playerid, COLOR_RED, \"Nem vagy admin.\");
if(hazacska == -1) return SCM(playerid, COLOR_GREY, \"Nincs ház a közelben.\");
RemoveHouse(hazacska);
SCM(playerid, COLOR_WHITE, \"Ház törölve.\");
return 1;
}
CMD:haz(playerid, params[])
{
new Float:px, Float:py, Float:pz, ar, id;
GetPlayerPos(playerid, px, py, pz);
if(!IsPlayerAdmin(playerid)) return SCM(playerid, COLOR_RED, \"Nem vagy admin!\");
if(sscanf(params, \"dd\", id, ar)) return SCM(playerid, COLOR_GREY, \"Használat: /haz [iD!!!] [style (1-3)]\");
CreateHouse(id, px, py, pz, ar);
SCM(playerid, COLOR_WHITE, \"Ház létrehozva.\");
return 1;
}
CMD:bemegy(playerid, params[])
{
    new hazacska = MelyikHaz(playerid);
    if(hazacska)
    {
    if(hInfo[hazacska][Ar] == 0)
    {
   if(hInfo[hazacska][nyitva] == 0) return SCM(playerid, COLOR_RED, \"Az ajtó zárva van!\");
   SetPlayerInterior(playerid, hInfo[hazacska][interior]);
   SetPlayerPos(playerid, hInfo[hazacska][kX], hInfo[hazacska][kY], hInfo[hazacska][kZ]);
   SetPlayerVirtualWorld(playerid, hInfo[hazacska][iD]);
   hazban[playerid] = 1;
   kx[playerid] = hInfo[hazacska][X];
   ky[playerid] = hInfo[hazacska][Y];
   kz[playerid] = hInfo[hazacska][Z];
   mhazban[playerid] = hInfo[hazacska][iD];
}
}
return 1;
}
CMD:kimegy(playerid, params[])
{
if(hazban[playerid] == 0) return 0;
if(hInfo[mhazban[playerid]][nyitva] == 0) return SCM(playerid, COLOR_RED, \"Az ajtó zárva van!\");
SetPlayerPos(playerid, kx[playerid], ky[playerid], kz[playerid]);
SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
hazban[playerid] = 0;
return 1;
}
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Rupert\'s house system loaded.\");
print(\"--------------------------------------\\n\");
    hazak = 0;
LoadHouses();
DisableInteriorEnterExits();
printf(\"Összes ház: %d!\", hazak);
print(\"---------------------------------------------------\");
print(\"---------------------------------------------------\");
return 1;
}
public OnFilterScriptExit()
{
    SaveHouses();
    hazak = 0;
return 1;
}
public OnPlayerConnect(playerid)
{
hazban[playerid] = 0;
mhazban[playerid] = 0;
kx[playerid] = 0;
ky[playerid] = 0;
kz[playerid] = 0;
SCM(playerid, COLOR_GRREN, \"A szerveren megtalálható a Rupert által készített házrendszer!\");
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
hazban[playerid] = 0;
mhazban[playerid] = 0;
kx[playerid] = 0;
ky[playerid] = 0;
kz[playerid] = 0;
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(pressed(KEY_WALK) && hazban[playerid] == 1)
{
    if(IsPlayerInRangeOfPoint(playerid, 3.0, hInfo[mhazban[playerid]][kX], hInfo[mhazban[playerid]][kY], hInfo[mhazban[playerid]][kZ]))
    {
    if(IsPlayerHaveHazkulcs(playerid, mhazban[playerid]))
    {
      ShowPlayerDialog(playerid, hazikoo3, DIALOG_STYLE_LIST, \"Ház infó\", \"Kimegy\\nKinyitás\\nBezárás\", \"Rendben\", \"Mégsem\");
   }
   else ShowPlayerDialog(playerid, hazikoo5, DIALOG_STYLE_LIST, \"Ház infó\", \"Kimegy\", \"Rendben\", \"Mégsem\");
}
}
new hazacska = MelyikHaz(playerid);
if(pressed(KEY_WALK) && hazacska)
{
    if(hInfo[hazacska][Ar] > 0)
    {
       ShowPlayerDialog(playerid, hazikoo, DIALOG_STYLE_LIST, \"Ház infó\",\"Ház megvétele\", \"Rendben\", \"Mégsem\");
}
else if(IsPlayerHaveHazkulcs(playerid, hazacska))
{
    ShowPlayerDialog(playerid, hazikoo2, DIALOG_STYLE_LIST, \"Ház infó\", \"Bemegy\\nKinyitás\\nBezárás\\nHáz eladása\", \"Rendben\",\"Mégsem\");
}
else
{
    ShowPlayerDialog(playerid, hazikoo4, DIALOG_STYLE_LIST, \"Ház infó\", \"Megpróbálok bemenni\", \"Rendben\",\"Mégsem\");
}
}
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == hazikoo)
{
    if(!response) return 0;
    if(listitem == 0)
    {
   new hazacska = MelyikHaz(playerid);
        if(GetPlayerMoney(playerid) < hInfo[hazacska][Ar]) return SCM(playerid, COLOR_RED, \"Nincs elég pénzed!\");
   hInfo[hazacska][Owner] = pName(playerid);
          GivePlayerMoney(playerid, -hInfo[hazacska][Ar]);
hInfo[hazacska][Ar] = 0;
        SCM(playerid, COLOR_YELLOW, \"Ház megvéve!\");
        SaveHouse(hazacska);
        format(stri, 256, \"A ház tulajdonosa:\\n%s\\nNyomj ALT-ot.\", hInfo[hazacska][Owner]);
        Update3DTextLabelText(haztext[hazacska], -1, stri);
    }
}
if(dialogid == hazikoo2)
{
    new hazacska = MelyikHaz(playerid);
    if(!response) return 0;
    if(listitem == 0)
    {
   cmd_bemegy(playerid, \"\");
    }
    else if(listitem == 1)
    {
   hInfo[hazacska][nyitva] = 1;
   SCM(playerid, COLOR_GREEN, \"Ajtó kinyitva.\");
    }
    else if(listitem == 2)
    {
        hInfo[hazacska][nyitva] = 0;
   SCM(playerid, COLOR_GREEN, \"Ajtó bezárva.\");
    }
    else if(listitem == 3)
    {
            GivePlayerMoney(playerid, 5000);
            format(hInfo[hazacska][Owner], 24, \"%s\", \"\");
        if(hInfo[hazacska][style] == 1) hInfo[hazacska][Ar] = 5000;
        if(hInfo[hazacska][style] == 2) hInfo[hazacska][Ar] = 10000;
        if(hInfo[hazacska][style] == 3) hInfo[hazacska][Ar] = 25000;
        SCM(playerid, COLOR_YELLOW, \"Ház eladva!\");
        format(stri, 256, \"A ház eladó! Ára:\\n%d$\\n Nyomj ALT-ot.\", hInfo[hazacska][Ar]);
        SaveHouse(hazacska);
        Update3DTextLabelText(haztext[hazacska], -1, stri);
    }
}
if(dialogid == hazikoo3)
{
    if(!response) return 0;
    if(listitem == 0)
    {
   cmd_kimegy(playerid, \"\");
    }
    else if(listitem == 1)
    {
        hInfo[mhazban[playerid]][nyitva] = 1;
   SCM(playerid, COLOR_GREEN, \"Ajtó kinyitva.\");
    }
    else if(listitem == 2)
    {
        hInfo[mhazban[playerid]][nyitva] = 0;
   SCM(playerid, COLOR_GREEN, \"Ajtó bezárva.\");
    }
}
if(dialogid == hazikoo4)
{
    if(!response) return 0;
    cmd_bemegy(playerid, \"\");
}
if(dialogid == hazikoo5)
{
    if(!response) return 0;
    cmd_kimegy(playerid, \"\");
}
return 1;
}
CreateHouse(id, Float:x, Float:y, Float:z, stylee)
{
new hFile[128];
format(hFile, 128, \"/Hazak/%d.ini\", id);
if(dini_Exists(hFile)) return printf(\"%d ID ház létezik!!\", id);
dini_Create(hFile);
dini_Set(hFile, \"Owner\", \"\");
dini_FloatSet(hFile, \"X\", x);
dini_FloatSet(hFile, \"Y\", y);
dini_FloatSet(hFile, \"Z\", z);
dini_IntSet(hFile, \"Style\", stylee);
if(stylee == 1)
{
dini_IntSet(hFile, \"Ar\", 5000);
dini_IntSet(hFile, \"Interior\", 1);
dini_FloatSet(hFile, \"kX\", 223.043991);
dini_FloatSet(hFile, \"kY\",    1289.259888);
dini_FloatSet(hFile, \"kZ\",    1082.199951);
}
if(stylee == 2)
{
dini_IntSet(hFile, \"Ar\", 10000);
dini_IntSet(hFile, \"Interior\", 2);
dini_FloatSet(hFile, \"kX\",    225.756989 );
dini_FloatSet(hFile, \"kY\",    1240.000000 );
dini_FloatSet(hFile, \"kZ\",    1082.149902 );
}
if(stylee == 3)
{
dini_IntSet(hFile, \"Ar\", 25000);
dini_IntSet(hFile, \"Interior\", 3);
dini_FloatSet(hFile, \"kX\",    235.508994 );
dini_FloatSet(hFile, \"kY\",    1189.169897  );
dini_FloatSet(hFile, \"kZ\",    1080.339966  );
}
dini_IntSet(hFile, \"Nyitva\", 0);
hInfo[id][iD] = id;
hInfo[id][X] = dini_Float(hFile, \"X\");
hInfo[id][Y] = dini_Float(hFile, \"Y\");
hInfo[id][Z] = dini_Float(hFile, \"Z\");
hInfo[id][Ar] = dini_Int(hFile, \"Ar\");
hInfo[id][kX] = dini_Float(hFile, \"kX\");
hInfo[id][kY] = dini_Float(hFile, \"kY\");
hInfo[id][kZ] = dini_Float(hFile, \"kZ\");
hInfo[id][style] = dini_Int(hFile, \"Style\");
hInfo[id][interior] = dini_Int(hFile, \"Interior\");
printf(\"%d ID ház betöltve!\", id);
format(stri, 256, \"ID:%d\\nA ház eladó! Ára:\\n%d$\\n Nyomj ALT-ot.\", id, hInfo[id][Ar]);
haztext2[id] = Create3DTextLabel(\"Nyomj ALT-ot.\", -1, hInfo[id][kX], hInfo[id][kY], hInfo[id][kZ], 30, id, 0);
haztext[id] = Create3DTextLabel(stri, -1, x, y, z, 30, 0, 0);
hazak++;
return 1;
}
LoadHouse(id)
{
    new hFile[128];
format(hFile, 128, \"/Hazak/%d.ini\", id);
if(!dini_Exists(hFile)) return 0;
hInfo[id][iD] = id;
format(hInfo[id][Owner], 24, \"%s\", dini_Get(hFile, \"Owner\"));
hInfo[id][X] = dini_Float(hFile, \"X\");
hInfo[id][Y] = dini_Float(hFile, \"Y\");
hInfo[id][Z] = dini_Float(hFile, \"Z\");
hInfo[id][Ar] = dini_Int(hFile, \"Ar\");
hInfo[id][kX] = dini_Float(hFile, \"kX\");
hInfo[id][kY] = dini_Float(hFile, \"kY\");
hInfo[id][kZ] = dini_Float(hFile, \"kZ\");
hInfo[id][interior] = dini_Int(hFile, \"Interior\");
hInfo[id][style] = dini_Int(hFile, \"Style\");
hInfo[id][nyitva] = dini_Int(hFile, \"Nyitva\");
if(hInfo[id][Ar] == 0)
{
    format(stri, 256, \"ID:%d\\nA ház tulajdonosa:\\n%s\\nNyomj ALT-ot.\", id, hInfo[id][Owner]);
haztext[id] = Create3DTextLabel(stri, -1, hInfo[id][X], hInfo[id][Y], hInfo[id][Z], 30, 0, 0);
}
else
{
    format(stri, 256, \"ID:%d\\nA ház eladó! Ára:\\n%d$\\n Nyomj ALT-ot.\", id, hInfo[id][Ar]);
haztext[id] = Create3DTextLabel(stri, -1, hInfo[id][X], hInfo[id][Y], hInfo[id][Z], 30, 0, 0);
}
haztext2[id] = Create3DTextLabel(\"Nyomj ALT-ot.\", -1, hInfo[id][kX], hInfo[id][kY], hInfo[id][kZ], 30, id, 0);
printf(\"%d ID ház betöltve!\", id);
hazak++;
return 1;
}
SaveHouse(id)
{
    new hFile[128];
format(hFile, 128, \"/Hazak/%d.ini\", id);
if(!dini_Exists(hFile)) return 0;
dini_Set(hFile, \"Owner\", hInfo[id][Owner]);
dini_FloatSet(hFile, \"X\", hInfo[id][X]);
dini_FloatSet(hFile, \"Y\", hInfo[id][Y]);
dini_FloatSet(hFile, \"Z\", hInfo[id][Z]);
dini_IntSet(hFile, \"Ar\", hInfo[id][Ar]);
dini_IntSet(hFile, \"Nyitva\", hInfo[id][nyitva]);
printf(\"%d ID ház elmentve!\", id);
return 1;
}
RemoveHouse(id)
{
    new hFile[128];
format(hFile, 128, \"/Hazak/%d.ini\", id);
if(!dini_Exists(hFile)) return 0;
dini_Remove(hFile);
printf(\"%d ID ház törölve.\", id);
    hInfo[id][X] = 0;
hInfo[id][Y] = 0;
hInfo[id][Z] = 0;
hInfo[id][Ar] = 0;
hInfo[id][nyitva] = 0;
hazak--;
Delete3DTextLabel(haztext[id]);
Delete3DTextLabel(haztext2[id]);
return 1;
}
stock LoadHouses()
{
for(new i=0;i<MAX_HOUSES;i++)
{
    LoadHouse(i);
}
return 1;
}
stock SaveHouses()
{
for(new i=0;i<MAX_HOUSES;i++)
{
    SaveHouse(i);
}
return 1;
}
stock MelyikHaz(playerid)
{
for(new i;i<MAX_HOUSES;i++)
{
    if(IsPlayerInRangeOfPoint(playerid, 1.0, hInfo[X], hInfo[Y], hInfo[Z])) return i;
}
return -1;
}
stock pName(id)
{
new name[24];
GetPlayerName(id, name, 24);
return name;
}
« Utoljára szerkesztve: 2012. december 14. - 15:39:10 írta Rupert »

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Rupert\'s house system
« Válasz #1 Dátum: 2012. december 13. - 21:41:25 »
0 Show voters
Szeretlek!!!!!!!!!! Pont ilyen szkriptett kerestem :D Köszönöm a publikálást.. :)

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
Rupert\'s house system
« Válasz #2 Dátum: 2012. december 13. - 21:44:52 »
0 Show voters
Nincs mit.

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Rupert\'s house system
« Válasz #3 Dátum: 2012. december 14. - 09:34:17 »
0 Show voters
Ha értesz a MySQL-hez, csinálhatnál egy v2-t :)
Am ez is jó lett.

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
Rupert\'s house system
« Válasz #4 Dátum: 2012. december 14. - 10:36:00 »
0 Show voters
Nekem is tetszik! :D Szépen, röviden megoldottál mindent! Nem rossz!

Nem elérhető shadee

  • 1073
    • Profil megtekintése
Rupert\'s house system
« Válasz #5 Dátum: 2012. december 14. - 13:42:13 »
0 Show voters
egyet nemértek,minek megadni az [iD]-t?egyszerûbb megoldása is van..mint pl: hazid++

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
Rupert\'s house system
« Válasz #6 Dátum: 2012. december 14. - 15:15:17 »
0 Show voters
Idézetet írta: shadee date=1355488933\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"30924\" data-ipsquote-contentclass=\"forums_Topic
egyet nemértek,minek megadni az [iD]-t?egyszerûbb megoldása is van..mint pl: hazid++
 
Komolyan olyan hülyének nézel, hogy azt hiszed nem csináltam meg úgy? Csak amiért dini-s, elcsúsztak az ID-k...
De nem kell megadni majd ID-t, a következõ, mySQL verzióban.
Videó hozzáadva.
E: Mégsem lesz új verzió, feleslegesnek tartom.
« Utoljára szerkesztve: 2012. december 14. - 16:49:49 írta Rupert »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal