public OnPlayerDeath(playerid, killerid, reason)
{
if IsPositionInArea(playerid,2471.1379,-2297.2871,2330.9753,-2450.1772,2325.3369,-2722.1604,2843.7278,-2736.2388,2877.4270,-2302.5518),
},
{
SendDeathMessage(killerid, playerid, reason); // send deathmessage
GivePlayerMoney(killerid, 1000); // give player 1000
}
else IsPositionInArea(playerid,0,0,100,100),
// else
{
SendDeathMessage(killerid, playerid, reason); // send deathmessage
GivePlayerMoney(killerid, -10000); // give the player -10000
}
}
Ik hoop dat iemand het kan fixen, want ik heb er al veel tijd aan besteed, en het is nog steeds niet gelukt. Degene die dit lukt krijgt natuurlijk een eervolle vermelding op de server.
Ik heb wat problemen met de volgende code:
complete code:
http://www.pastebin.ca/866481
de code onderaan:
bool:IsPositionInArea(Float:x,Float:y,Float:poss[][2],edges = sizeof poss) { if(edges < 3) return false; new last = edges - 1, Float:rsideangles = 0.0, Float:lsideangles = 0.0; for(new i = 0; i < edges; i++) { new next = (i == last) ? 0 : i + 1, next2 = (next == last) ? 0 : next + 1, Float:langle, Float:floats[4]; floats[0] = poss[next][1] - poss[i][1]; if(floats[0] < 0.0) floats[0] = poss[i][1] - poss[next][1]; floats[1] = poss[i][0] - poss[next][0]; if(floats[1] < 0.0) floats[1] = poss[next][0] - poss[i][0]; floats[2] = poss[next2][0] - poss[next][0]; if(floats[2] < 0.0) floats[2] = poss[next][0] - poss[next2][0]; floats[3] = poss[next2][1] - poss[next][1]; if(floats[3] < 0) floats[3] = poss[next][1] - poss[next2][1]; langle = atan(floats[0] / floats[1]) + atan(floats[2] / floats[3]) + 180; lsideangles += langle; rsideangles += 360.0 - langle; } if(lsideangles > rsideangles) { for(new i = 0; i < edges; i++) { new next = (i == last) ? 0 : i + 1, Float:em = (poss[i][0] - poss[next][0]) / (poss[i][1] - poss[next][1]), // y = mx + c Float:ec = poss[next][1] - (poss[next][0] * em); if(poss[i][0] < poss[next][0]) { if(y > ((em * x) + ec)) return false; } else if(poss[i][0] > poss[next][0]) { if(y < ((em * x) + ec)) return false; } else if(poss[i][1] < poss[next][1]) { new Float:val = y - ec; if(em != 0) val /= em; if(x < val) return false; } else if(poss[i][1] > poss[next][1]) { new Float:val = y - ec; if(em != 0) val /= em; if(x > val) return false; } } } else if(lsideangles < rsideangles) { for(new i = 0; i < edges; i++) { new next = (i == last) ? 0 : i + 1, Float:em = (poss[i][0] - poss[next][0]) / (poss[i][1] - poss[next][1]), // y = mx + c Float:ec = poss[next][1] - (poss[next][0] * em); if(poss[i][0] < poss[next][0]) { if(y < ((em * x) + ec)) return false; } else if(poss[i][0] > poss[next][0]) { if(y > ((em * x) + ec)) return false; } else if(poss[i][1] < poss[next][1]) { new Float:val = y - ec; if(em != 0) val /= em; if(x > val) return false; } else if(poss[i][1] > poss[next][1]) { new Float:val = y - ec; if(em != 0) val /= em; if(x < val) return false; } } } else return false; return true; }code bovenaan
hier zou de functie in moeten staan
public OnPlayerDeath(playerid, killerid, reason) { if IsPositionInArea(playerid,2471.1379,-2297.2871,2330.9753,-2450.1772,2325.3369,-2722.1604,2843.7278,-2736.2388,2877.4270,-2302.5518), }, { SendDeathMessage(killerid, playerid, reason); // send deathmessage GivePlayerMoney(killerid, 1000); // give player 1000 } else IsPositionInArea(playerid,0,0,100,100), // else { SendDeathMessage(killerid, playerid, reason); // send deathmessage GivePlayerMoney(killerid, -10000); // give the player -10000 } }Ik hoop dat iemand het kan fixen, want ik heb er al veel tijd aan besteed, en het is nog steeds niet gelukt. Degene die dit lukt krijgt natuurlijk een eervolle vermelding op de server.
TNX Clank