Und wenn der Spieler dann im Nahkampf mit der Schusswaffe schlägt?
Dann erzähl mir wie du mit einem OnPlayerShoot Callback herausfinden willst ob er schießt und dann den Callback aufrufen willst ;).
Und wenn der Spieler dann im Nahkampf mit der Schusswaffe schlägt?
Dann erzähl mir wie du mit einem OnPlayerShoot Callback herausfinden willst ob er schießt und dann den Callback aufrufen willst ;).
OnPlayerGiveDamage
- ist aber für jegliche Art von Schaden, den ein Spieler, einem anderen machen kann
Wenn du es genauer machen willst bzw. nur für Schüsse, müsstest du dein eigenes Callback OnPlayerShoot machen, das immer wenn ein Spieler schießt aufgerufen wird.
Erzähl kein Quatsch er kann auch einfach abfragen ob der damager eine schusswaffe ausgerüstet hat mit GetPlayerWeapon(spielerid)
Alles anzeigenHabe es so:
public OnPlayerCommandText(playerid, cmdtext[])
{
if(GetPVarInt(playerid,"Eingeloggt") != 1) return 1;
new string2[164];
format(string2,sizeof(string2),"Der Befehl %s existiert auf diesem Server nicht.",cmdtext);
return SendClientMessage(playerid,Orange,string2),SendClientMessage(playerid,Orange,"Du kannst unter /hilfe alle Befehle sehen.");
}
Aber es klappt nicht
Guck mal was ich gepostet hab!
3 PS3 Spiele xD:
#


Mach es so
if(VARIABLEEINGELOGGT == 0)
{
SendClientMessage(playerid,rot,"Die Befehle funktionieren erst nach dem Login);
}
else
{
Befehl1
Befehl2
Befehl3
u.s.w
}
Alles anzeigenich würde es einfach unter
public OnPlayerDisconnect(playerid, reason)
{
if(GetPVarInt(playerid,"loggedin")==1)
{
SpielerSpeichern(playerid);
}
return 1;
}
:facepalm: lies doch mal die anderen Beiträge dann weist du wieso das hier totaler quatsch ist.
Wie kann ich ein Timer erstellen?
Du hast ein oder verwendet. Wollte dich nur belehren, da du beide Methoden gleich gestellt hast.
Rein Theoretisch würde beides Funktionieren aber Version 2 wäre natürlich Ressourcen sparender ;).
Du hast eine Klammer zu viel zu gemacht ;).
@midomen: Dein Ernst? OnPlayerUpdate verwenden um die Accounts zu speichern? Eine schlechtere Position dafür gibt es gar nicht. Da würden die Accounts jede Millisekunde ca. gespeichert werden, das würde den Server sehr auslasten.
Ich empfehle immer wenn Statistiken vom Spieler geändert werden zu speichern, ist wahrscheinlich auch ein wenig zu oft aber sicher.
Ich habe gesagt er kann auch einen eigenen Timer erstellt der z.B jede 5 Sekunden oder so geht ;).
ZitatWie kann ich ein Timer erstellen?
Mit
SetTimer("allespeichern",5000,true); //Bei Ongamemodeinit
//Ganz unten
forward allespeichern();
public allespeichern()
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
SpielerSpeichern(i);
}
}
}
Kenne das Problem bei einem Restart wird der Public Ongamemodeexit & Onplayerdisconnect nicht abgerufen da hilft nur OnPlayerUpdate oder ein selbst erstellter Timer.
Ja ohne Warnings
aber wieso Funktoniert nur der BSN Bizz nicht wenn alle anderen mit dem gleichem Prinzip gehen?.
Ich habe folgendes problem sobald überprüft wird ob das Biz BSN existiert wird es geladen falls nicht erstellt mein problem ist das er zwar die Datei erstellt aber ohne entsprechenden Inhalt und er eine Part Datei erstellt. Hier Codes:
//Speichern
//BSN
new string9[256];
dini_IntSet("/Bizz/BSN.ini","Kasse",BizzInfo[8][bKasse]);
dini_IntSet("/Bizz/BSN.ini","Lager",BizzInfo[8][bLager]);
dini_IntSet("/Bizz/BSN.ini","Mats",BizzInfo[8][bMats]);
dini_IntSet("/Bizz/BSN.ini","Preis",BizzInfo[8][bPreis]);
dini_IntSet("/Bizz/BSN.ini","Level",BizzInfo[8][bLevel]);
dini_FloatSet("/Bizz/BSN.ini","PosX",BizzInfo[8][bx]);
dini_FloatSet("/Bizz/BSN.ini","PosY",BizzInfo[8][by]);
dini_FloatSet("/Bizz/BSN.ini","PosZ",BizzInfo[8][bz]);
dini_Set("/Bizz/BSN.ini","Besitzer",BizzInfo[8][bBesitzer]);
dini_Set("/Bizz/BSN.ini","Name",BizzInfo[8][bName]);
format(string9,256,"Bizz: %s\nPreis: %i\nLevel: %i\nBesitzer: %s\nRohstoffe %i/%i",BizzInfo[8][bName],BizzInfo[8][bPreis],BizzInfo[8][bLevel],BizzInfo[8] [bBesitzer],BizzInfo[8][bMats],BizzInfo[8][bLager]);
Delete3DTextLabel(tlabel[8]);
tlabel[8] = Create3DTextLabel(string9,0x00C5FFFF,-116.6097,1031.7168,19.7726,30.0,0);
//Laden
new string9[256];
if(dini_Exists("/Bizz/BSN.ini"))
{
format(BizzInfo[8][bBesitzer],256,"%s",dini_Get("/Bizz/BSN.ini","Besitzer"));
format(BizzInfo[8][bName],256,"%s",dini_Get("/Bizz/BSN.ini","Name"));
BizzInfo[8][bKasse] = dini_Int("/Bizz/BSN.ini","Kasse");
BizzInfo[8][bLager] = dini_Int("/Bizz/BSN.ini","Lager");
BizzInfo[8][bMats] = dini_Int("/Bizz/BSN.ini","Mats");
BizzInfo[8][bPreis] = dini_Int("/Bizz/BSN.ini","Preis");
BizzInfo[8][bLevel] = dini_Int("/Bizz/BSN.ini","Level");
BizzInfo[8][bx] = dini_Float("/Bizz/BSN.ini","PosX");
BizzInfo[8][by] = dini_Float("/Bizz/BSN.ini","PosY");
BizzInfo[8][bz] = dini_Float("/Bizz/BSN.ini","PosZ");
CreatePickup(1272,1,-206.2005,1145.8529,19.7422,0);
format(string9,256,"Bizz: %s\nPreis: %i\nLevel: %i\nBesitzer: %s\nRohstoffe %i/%i",BizzInfo[8][bName],BizzInfo[8][bPreis],BizzInfo[8][bLevel],BizzInfo[8][bBesitzer],BizzInfo[8][bMats],BizzInfo[8][bLager]);
tlabel[8] = Create3DTextLabel(string9,0x00C5FFFF,-206.2005,1145.8529,19.7422,30.0,0);
}
else
{
dini_Create("/Bizz/BSN.ini");
format(BizzInfo[8][bBesitzer],256,"Niemand");
format(BizzInfo[8][bName],256,"Burger Shot");
BizzInfo[8][bKasse] = 0;
BizzInfo[8][bLager] = 10000;
BizzInfo[8][bMats] = 10000;
BizzInfo[8][bPreis] = 200000;
BizzInfo[8][bLevel] = 3;
BizzInfo[8][bx] = -206.2005;
BizzInfo[8][by] = 1145.8529;
BizzInfo[8][bz] = 19.7422;
format(string9,256,"Bizz: %s\nPreis: %i\nLevel: %i\nBesitzer: %s\nRohstoffe %i/%i",BizzInfo[8][bName],BizzInfo[8][bPreis],BizzInfo[8][bLevel],BizzInfo[8][bBesitzer],BizzInfo[8][bMats],BizzInfo[8][bLager]);
tlabel[8] = Create3DTextLabel(string9,0x00C5FFFF,-206.2005,1145.8529,19.7422,30.0,0);
}
Info: alle anderen Bizz erstellen sich ohne Probleme.
du ziehst der entsprechenden Variable -1000 ab z.B
enum bank {
geld,
bank
};
SpielerBank[MAX_PLAYERS][bank];
und dann entsprechend in einem Command oder so
SpielerBank[SpielerID][geld] -= 1000;
Timer setzen und dann wert abfragen.
So ist es richtig
if((transferid != INVALID_PLAYER_ID) && (strval(TransferInfo[1]) > PlayerInfo[playerid][pAccount]))
Danke das Installationstutorial wurde bearbeitet und ich habe eine accounts.sql Datei im Tutorial hochgeladen damit ihr die Tabellen u.s.w nicht selber erstellen musst da es dabei bei vielen probleme gab. Bei Buggs Laggs Fehlern lücken oder sonstigem schreibt es in diesem Thema oder per PN ich fixxe es zügig.
Alles anzeigenEinmal für dumme.
Du musst die X,Y,Z Koords ändern, wobei Pickup und dann spawnen eh schhhh... ist.
Freue mich schon wie du hier im Breadfisch bist und heulst dein Autohaus/Adminsystem geht nicht.
..... lern Deutsch, bekommt man ja Augenkrebs....
Batista nimm dich zurück du heulst doch selber permanent in Skype und hast irgendwelche Scripting Probleme dann sollte man sowas "Freue mich schon wie du hier im Breadfisch bist und heulst dein Autohaus/Adminsystem geht nicht." nicht schreiben -,-.
SetPlayerCamerasPos
Alles anzeigenHi,
ich hab das gleiche Problem (gehabt).
Du darfst nicht soviele Bots auf einmal connectne, ab 10 NPCs: pro 500ms ein NPC.
Quelle:
http://forum.sa-mp.com/showthread.php?t=333955&page=2
Ein ähnlichen Thread hab ich schon gesehen deswegen habe ich Pro 100ms 3 Bots connecten lassen.
Kann man irgendwie die weißen Gebiete einschalten?
Was für weiße Gebiete?