Jo, du verweist auf den index 1.
Und die bdID ist die 1.
Beiträge von Pascal.
-
-
Bei new bdInfo?
Bsp:
Es gibt 5 Bürger shots die sollen alle die ID 1 haben.
Es gibt 3 24/7 shops die kriegen die ID 2. -
Ich habe das jetzt einfach mal so gemacht, wenn ich im Haus bin und raus gehe bin ich direkt im Bürgershot und wenn ich raus gehe bin ich direkt
am BSN in LS.
Aber wenn ich bei einem Marker rein will geht das nicht Oo
Ich habe bei new bdInfo ganz hinten eine ID gegeben, diese soll übereinstimmen mit der ID aus der Datenbank (b_id).
So und soll dann in diesen Bürger shot rein gehen, wenn er raus geht soll er dort landen wo er rein ging.
Folgende codes:
new bdInfo[][buildingsEnum] = {
{"Bürger Shot Nord", 1559,1199.2811,-918.6648,43.1191,1}, // 1 steht für die fremdID
{"Bürger Shot West", 1559, 810.9824,-1616.2720,13.5469,1},
{"Bürger Shot Nord", 1559, 1872.7986,2071.6619,11.0625,1},
{"Bürger Shot Nord - West", 1559, 2472.3940,2034.2115,11.0625,1},
{"Bürger Shot West", 1559, 2169.9138,2795.8726,10.8203,1}
};ocmd:exit(playerid,params[])
{
if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
for(new i=0; i<sizeof(bsInfo); i++)
{
new id = GetPVarInt(playerid,"EnterBuiID");
if(GetPlayerVirtualWorld(playerid)!=i)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,bsInfo[i][ib_x],bsInfo[i][ib_y],bsInfo[i][ib_z]))continue;
SetPlayerPos(playerid,bdInfo[id][bd_x],bdInfo[id][bd_y],bdInfo[id][bd_z]);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
return 1;
}
for(new i=0; i<sizeof(hInfo); i++)
{
if(GetPlayerVirtualWorld(playerid)!=i)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]))continue;
SetPlayerPos(playerid,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
return 1;
}
return 1;
}ocmd:enter(playerid,params[])
{
if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
for(new i=0; i<sizeof(bsInfo); i++)
{
print("DEBUG: bsInfo wurde aufgerufen");
if(!bsInfo[i][db_id])continue;
if(!bsInfo[i][b_id])continue;
if(bsInfo[i][ib_x] == 0.0)continue;
for(new b=0; b<sizeof(bdInfo); b++)
{
if(bsInfo[i][b_id] !=bdInfo[b][bdID])continue;
print("DEBUG: bdInfo wurde aufgerufen.");
if(!IsPlayerInRangeOfPoint(playerid,2,bdInfo[b][bd_x],bdInfo[b][bd_y],bdInfo[b][bd_z]))continue;
printf("IsPlayerInRangeOfPoint(playerid,2,bdInfo[%i][bd_x],bdInfo[%i][bd_y],bdInfo[%i][bd_z]",b,b,b);
SetPVarInt(playerid,"EnterBuiID",b);
break;
}
printf("BusinessID: %i | ShopID: %i | Produkte %i",i,bsInfo[i][b_id],bsInfo[i][b_prods]);
if(bsInfo[i][b_prods] < 1)return SCM(playerid,COLOR_GRAU,"Das Lager vom Business ist zurzeit Leer.");
SetPlayerPos(playerid,bsInfo[i][ib_x],bsInfo[i][ib_y],bsInfo[i][ib_z]);
SetPlayerInterior(playerid,bsInfo[i][b_interior]);
SetPlayerVirtualWorld(playerid,i);
return 1;
}
for(new i=0; i<sizeof(hInfo); i++)
{
if(!hInfo[i][db_id])continue;
if(hInfo[i][i_x] == 0.0)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]))continue;
if(hInfo[i][h_lock] == 1)
{
if(!strcmp(hInfo[i][h_besitzer],SpielerName(playerid),true))
{
SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
SetPlayerInterior(playerid,hInfo[i][h_interior]);
SetPlayerVirtualWorld(playerid,i);
return 1;
}
return GameTextForPlayer(playerid,"~r~Abgeschlossen",1000,1);}
else if(hInfo[i][h_lock] == 0)
{
SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
SetPlayerInterior(playerid,hInfo[i][h_interior]);
SetPlayerVirtualWorld(playerid,i);
}
return 1;
}
return 1;
}
Die FremdID die ich in der Datenbank anlegen sollte, dafür habe ich b_id benutzt. -
Also ich habe schon ein AdminSystem
Hier mal bisschen was vom Script.
ocmd:makeadmin(playerid,params[]){ if(GetPVarInt(playerid,"Eingeloggt") == 0)return SCM(playerid,COLOR_GRAU,"Du bist nicht Eingeloggt."); if(!IsPlayerAdmin(playerid))return SCM(playerid,COLOR_GRAU,"Melde dich bitte als RCON-Admin an."); new pID,alevel,string[128]; if(sscanf(params,"ui",pID,alevel))return SCM(playerid,COLOR_GRAU,"Info: /makeadmin [playerid/name] [adminlevel(0-8)]"); if(!IsPlayerConnected(pID))return SCM(playerid,COLOR_GRAU,"Info: Der angegebene Spieler ist zurzeit nicht Online."); if(alevel <0 || alevel >8)return SCM(playerid,COLOR_GRAU,"Bitte wähle ein Adminlevel zwischen 0-8"); if(alevel == 0) { SetPVarInt(playerid,"Adminlevel",0); format(string,128,"Admin %s hat dir deine Adminrechte komplett entzogen. Adminlevel: %d",SpielerName(playerid),alevel); SCM(pID,COLOR_BLAU,string); format(string,128,"Du hast %s die Adminrechte entzogen. (Adminlevel: %d)",SpielerName(pID),alevel); SCM(playerid,COLOR_BLAU,string); return 1; } format(string,128,"Admin %s hat dir das Adminlevel %d vergeben.",SpielerName(playerid),alevel); SCM(pID,COLOR_BLAU,string); format(string,128,"Du hast %s das Adminlevel %d gegeben.",SpielerName(pID),alevel); SCM(pID,COLOR_BLAU,string); SetPVarInt(playerid,"Adminlevel",alevel); printf("Admin: %s | pID: %s | Adminlevel vergeben: %d",SpielerName(playerid),SpielerName(pID),alevel); return 1;}
CreateAcc(playerid){ new Spielerdatei[64]; format(Spielerdatei,64,"/%s/%s",ACC_SAVED,SpielerName(playerid)); dini_Create(Spielerdatei); dini_IntSet(Spielerdatei,"Adminlevel",0); dini_IntSet(Spielerdatei,"Ban",0); dini_FloatSet(Spielerdatei,"sX",0.0); dini_FloatSet(Spielerdatei,"sY",0.0); dini_FloatSet(Spielerdatei,"sZ",0.0); dini_FloatSet(Spielerdatei,"sR",0.0); LoadPlayer(playerid); printf("Account erstellt (/%s/%s)",ACC_SAVED,SpielerName(playerid)); return 1;}
SpielerName(playerid){ new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); return name;}
LoadPlayer(playerid){ new Spielerdatei[64]; format(Spielerdatei,64,"/%s/%s",ACC_SAVED,SpielerName(playerid)); SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel")); SetPVarInt(playerid,"Ban",dini_Int(Spielerdatei,"Ban")); SetPVarFloat(playerid,"sX",dini_Float(Spielerdatei,"sX")); SetPVarFloat(playerid,"sY",dini_Float(Spielerdatei,"sY")); SetPVarFloat(playerid,"sZ",dini_Float(Spielerdatei,"sZ")); SetPVarFloat(playerid,"sR",dini_Float(Spielerdatei,"sR")); SetPVarInt(playerid,"Eingeloggt",1); return 1;}
SavePlayer(playerid){ new Spielerdatei[128]; format(Spielerdatei,64,"/%s/%s",ACC_SAVED,SpielerName(playerid)); if(GetPVarInt(playerid,"Eingeloggt") == 1) { dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel")); dini_IntSet(Spielerdatei,"Ban",GetPVarInt(playerid,"Ban")); dini_FloatSet(Spielerdatei,"sX",GetPVarFloat(playerid,"sX")); dini_FloatSet(Spielerdatei,"sY",GetPVarFloat(playerid,"sY")); dini_FloatSet(Spielerdatei,"sZ",GetPVarFloat(playerid,"sZ")); dini_FloatSet(Spielerdatei,"sR",GetPVarFloat(playerid,"sR")); } return 1;}wenn ihr noch was braucht melden.
Ach ja und wie kann ich machen das man Makeadmin? über Rcon und als Normaler Level 8 Admin /makeadmin machen kann?Ich habe dir das doch gestern per Teamviewer gemacht Oo
Würdest du aufgepasst haben, würdest du jetzt wissen wie das Gehen würde.
Aber daran merkt man natürlich, hauptsache jemand anders scriptet für mich da muss ich ja nicht aufpassen.
Nun gut, da sieht man dass ja -
Schick den Code von der Fehlerzeile hier im pwn format.
-
Sorry, aber wie wäre es mit selber Probieren :)?
So schwer ist es jetzt auch nicht kriegt man innerhalb einer Stunde hin.
Und sowie ich weiß ist die Scripting Base auch nicht für so etwas gedacht, dass man Sachen suchen tut.
Eher für Scripting Probleme -
Wo soll ich den die Schleife einbinden?
Auch unter ocmd:enter?
Weil kann ja nicht 1 schleife haben und in der schleife noch eine machen oder?
Oder soll ich die fremd_id dann in der PVar Speichern in dem ich bei ocmd:enter über der bdInfo schleife eine bsInfo schleife machen? -
Naja wäre sicherlich nützlich für Anfänger oder wie schon jemand sagte für leute die keine Zeit/Erfahrung haben.
Meins reicht mir -
Okay trotzdem vielen Dank, werde es irgendwie mit deinen varianten umschreiben.
So dass keine veränderungen auffallen -
Habe mal das gefunden, aber ob das klappen wird weiß ich nicht.
Ein Versuch ist es wert
http://www.gtagarage.com/mods/show.php?id=14973Das ist eigentlich das gleiche:
http://bsndesign.webs.com/tde.htm -
Naja irgendwie etwas doof, weil würde die Bürger Shot Kordinaten in der Datenbank lassen.
Da der Bürger Shot auch schon eine hat in der Datenbank.
Aber gut muss ich mal gucken wie ich das jetzt noch am besten umschreibe.//EDIT:
Kann ich eig neben den Marker Kordinaten nicht einfach bsInfo benutzen? mit den Interior Kordinaten? -
BTW. Soweit ist Moneyhack eigentlich nicht möglich.
Solange dein Geld Serverseitig läuft.
Sprunkautomaten geben auch Money, da würde ich aufpassen das es nicht zu Bugs führt.Sprunk Automaten geben Geld?
Meinst du nicht eher Sprunk automaten 'ziehen' Geld ab?
Man soll ja auch abfragen ob GetPlayerMoney größer ist und nicht kleiner.
Sonst wäre ja irgendwie kein Sinn dahinter. -
Aso, die ist in der Datenbank.
Das Interior wird erstellt, sobald das Business gewählt wurde.
das wäre dann ib_x, ib_y, ib_z im enum von bsInfo. -
In dem abfragst ob das Geld größer als das Geld aus der Variable ist.
Sollte das der Fall sein Kick/Ban ihn.if(GetPlayerMoney(i) > sInfo[i][pGeld])
{
//Ban/Kick}
-
Welche Daten?
Das Enum + Variable also dieses "new" habe ich bereits gepostet.
Sonst hab ich nix. -
Ah, wusste jetzt nicht genau ob ich das mit Posten sollte.
new bsInfo[15][bizEnum]; //15 steht für die Anzahl der Business ^^ -
Okay
enum bizEnum {
Float:bx,
Float:by,
Float:bz,
Float:ib_x, //Zu den soll er Teleportiert werden (Im Script bereits festgelegt)
Float:ib_y, //Zu den soll er Teleportiert werden (Im Script bereits festgelegt)
Float:ib_z, //Zu den soll er Teleportiert werden (Im Script bereits festgelegt)
b_interior,
b_besitzer[MAX_PLAYER_NAME],
b_level,
b_preis,
db_id,
b_pickup,
Text3D:b_text,
b_kasse,
b_cobesitzer[MAX_PLAYER_NAME],
b_cokasse,
b_prods,
b_pPrice,
b_tauftrag,
b_id
}enum buildingsEnum {
bd_itext[128],
bd_pickup,
Float:bd_x, //Kordinate vom Marker
Float:bd_y, //Kordinate vom Marker
Float:bd_z, //Kordinate vom Marker
Text3D:bd_text
}new bdInfo[MAX_SHOP][buildingsEnum] = {
{"Bürger Shot Nord",1559,1199.2811,-918.6648,43.1191}, // BSE1 //Die Kordinaten sagen aus wo der Marker steht.
{"Bürger Shot West",1559,810.9824,-1616.2720,13.5469}, // BSE2
{"Bürger Shot Nord",1559,1872.7986,2071.6619,11.0625}, // BSE3
{"Bürger Shot Nord-West",1559,2472.3940,2034.2115,11.0625}, // BSE4
{"Bürger Shot West",1559,2169.9138,2795.8726,10.8203} // BSE5
}; -
Geeflow:
Sowas ist unerwünscht
Also halt dich ein wenig zurück mit deine Aussprachen -
Dort kommen Fehler.
Ich will ja das so machen das wenn er im bdInfo im Marker ist dazu sind die Kordinaten drinne.
bd_x bis z sind nur die Kordinaten der Marker.
So und wenn der im Marker ist und enter drückt soll er in das Business Interior kommen bsp Bürgershot. -
Geht leider immer noch nicht, ich musste den Code etwas umschreiben weil du hattest überall bdInfo gemacht und da war viel von bsInfo
Aber nun gut.
Diesmal hat er es nur 4x aufgerufen.Code
Alles anzeigen[22:04:53] DEBUG: Aufgerufen: 0 [22:04:53] db_id: 1 [22:04:53] ib_x: 0.000000 [22:04:53] DEBUG: Aufgerufen: 1 [22:04:53] db_id: 2 [22:04:53] ib_x: 0.000000 [22:04:53] DEBUG: Aufgerufen: 2 [22:04:53] db_id: 3 [22:04:53] ib_x: 0.000000 [22:04:53] DEBUG: Aufgerufen: 3 [22:04:53] db_id: 4 [22:04:53] ib_x: 0.000000 [22:04:53] DEBUG: Aufgerufen: 4 [22:04:53] db_id: 5 [22:04:53] ib_x: 363.850006 [22:04:53] Range: 0