Hallo.
Wie kann ich ein Robsystem scripten, indem man statt einen Befehl einzugeben, 10 sekunden auf den NPC zielen muss?
Danke schonmal!
MFG
Hallo.
Wie kann ich ein Robsystem scripten, indem man statt einen Befehl einzugeben, 10 sekunden auf den NPC zielen muss?
Danke schonmal!
MFG
Die beiden Werte kannst du wie folgt zusammen rechnen und ausgeben:
new kassenBeute = 1500; // Musst du nicht anlegen, du kannst in Zeile 3 auch direkt 1500 hinschreiben statt "kassenBeute"
format(string, sizeof(string), "** Du hast %d$ erbeutet!", robbonus + kassenBeute);
SendClientMessage(playeris, COLOR_GREEN, string);
Dementsprechend reicht es dann auch aus, einmal GivePlayerMoney zu machen wenn du die beiden zusammengerechnet hast.
dann doch direkt new kassenBeute = 1500 + robbonus; und dann kassenBeute ausgeben lassen
mit GetPlayerTargetPlayer überprüfen ob er auf den NPC zielt und dann nen timer starten. vielleicht in nem anderen 1 sekunden timer prüfen das der Spieler immer noch auf den NPC zielt und wenn nicht den timer killen lassen
Genauer gesagt:
if(strcmp(cmd, "/robtanke", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, 663.949523, -568.755798, 16.343263))
{
new beute = random(500) + 1501;
WantedPoints[playerid] += 2;
SetPlayerCriminal(playerid, 255, "Tankstelle ausgeraubt!");
GivePlayerMoney(playerid, beute);
format(string, sizeof(string), "** Du hast %d$ aus dem Geldbeutel und der Kasse bekommen!", beute );
SendClientMessage(playerid, COLOR_GREEN, string);
}
}
return 1;
}
//EDIT: Ihr wart schneller
// 1. problem gefixxt
Jetzt nurnoch das mit dem zielen und dann währ alles perfekt :b
MFG
Jetzt nurnoch das mit dem zielen und dann währ alles perfekt :b
Kannst es so machen:
new target[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
new target = GetPlayerTargetPlayer(playerid);
if(target == INVALID_PLAYER_ID && !target[playerid]) return 1;
if(target == INVALID_PLAYER_ID) return target[playerid]=0;
if(!IsPlayerNPC(target)) return 1; //Hier prüfen ob es der richtige NPC ist!
if(!target[playerid]) target[playerid] = gettime()+10;
else {
if(gettime() >= target[playerid]) {
//Hier hat er 10Sekunden auf den Bot gezielt!
}
}
return 1;
}
mfg.
Hallo!
das hier ist jetzt mein Befehl:
if(strcmp(cmd, "/robtanke", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, 663.949523, -568.755798, 16.343263))
{
WantedPoints[playerid] += 2;
SetPlayerCriminal(playerid,255, "Tankstelle ausgeraubt!");
GivePlayerMoney(playerid,kassenBeute + robbonus);
format(string, sizeof(string), "** Du hast %d$ erbeutet!!",robbonus + kassenBeute);
SendClientMessage(playerid, COLOR_GREEN, string);
}
return 1;
}
wie bau ich das ein?
MFG
Der Code von Kaliber wird so nicht kompilieren (lokale Variable heißt gleich wie das globale Array), außerdem sind die returns auch nicht grade toll, wenn danach noch Code folgt.
So:
new g_target[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
new l_target = GetPlayerTargetPlayer(playerid);
if(l_target == INVALID_PLAYER_ID)
{
if(g_target[playerid]) g_target[playerid]=0;
}
else if(IsPlayerNPC(l_target))
{
if(!g_target[playerid]) g_target[playerid] = gettime()+10;
else
{
if(gettime() >= g_target[playerid])
{
//Hier hat er 10Sekunden auf den Bot gezielt!
g_target[playerid] = 0;
//Hier dann die Nachricht aus deinem /robtanke.
}
}
}
return 1;
}