Graal Forums

Graal Forums (https://forums.graalonline.com/forums/index.php)
-   NPC Scripting (https://forums.graalonline.com/forums/forumdisplay.php?f=8)
-   -   Control NPC for spawning custom baddies? (https://forums.graalonline.com/forums/showthread.php?t=134270523)

maximus_asinus 07-28-2017 11:01 PM

Control NPC for spawning custom baddies?
 
This is likely years away from what I'm capable of. I'm creating a custom baddy but I'd like to have new baddies spawn on a timer. Is there a way to create new enemies with their own behaviour without having to manually place every NPC? From my limited experience with GS1 I think it would have something to do with putnpc2, but I'm working in Gonstruct so I can't be certain.

On a sidenote, if anyone can help me get the offline editor to work that'd be appreciated.

Kamaeru 07-29-2017 04:00 AM

You can basically add a class that you join via your baddy that contains a function which runs a timer each time the baddy dies. Or just add the timer in the script, but if you do what I'm saying you can add other functions for like making the baddy drop gralats or items when it dies.

This is the old function they used on Graal2001:

NPC Code:
function domonsterdeath() {
setTimer(45);
if (strlen(#a)>0) {
player.clientr.monsterskilled++;
if (strlen(#p(0))>0) {
setstring clientr.mkills#p(0),#v(strtofloat(#s(clientr.mkill s#p(0)))+1);
setstring clientr.kills#p(0),#v(strtofloat(#s(clientr.kills# p(0)))+1);
}
}



So however your baddy death is handled, lets just assume it's really basic and you play the death animation and then do:

NPC Code:

hide();
doMonsterDeath();



and then the timeout part of your code would make it initialize again, so if your initialization is on creation of the NPC then just put onCreated(); in the onTimeout function

sorry for mixing up gs1 and gs2

MysticalDragon 07-31-2017 12:21 AM

Quote:

Originally Posted by Kamaeru (Post 1741685)
You can basically add a class that you join via your baddy that contains a function which runs a timer each time the baddy dies. Or just add the timer in the script, but if you do what I'm saying you can add other functions for like making the baddy drop gralats or items when it dies.

This is the old function they used on Graal2001:

NPC Code:
function domonsterdeath() {
setTimer(45);
if (strlen(#a)>0) {
player.clientr.monsterskilled++;
if (strlen(#p(0))>0) {
setstring clientr.mkills#p(0),#v(strtofloat(#s(clientr.mkill s#p(0)))+1);
setstring clientr.kills#p(0),#v(strtofloat(#s(clientr.kills# p(0)))+1);
}
}
} // you was missing a bracket might be intentional if you posting a code snibblet



So however your baddy death is handled, lets just assume it's really basic and you play the death animation and then do:

NPC Code:

hide();
doMonsterDeath();



and then the timeout part of your code would make it initialize again, so if your initialization is on creation of the NPC then just put onCreated(); in the onTimeout function

sorry for mixing up gs1 and gs2

NPC Code:

function domonsterdeath() {
setTimer(45);

if (player.account != NULL) { //Not sure how your class knows the player account (I just converted your code to GS2)
player.clientr.monsterskilled++;

if (params[0] > 0) {
clientr.("mkills"@params[0])++;
clientr.("kills"@params[0])++;
}
}
}



although I kinda think its weird you have 2 flags that do the same exact thing.

Regarding a NPC DataBase Spawner you could do.

NPC Code:
    
temp.entities = {"npc_class1", "npc_class2"};
temp.random_entity_index = int(random(0, temp.entities.size()));
temp.entity_id = this.entities[temp.random_entity_index];
temp.obj = putNPC2(0, 0, "join( \"" @ temp.entity_id @ "\");");
temp.obj.generated = true; //Tell the class its Generated
temp.obj.warpto(temp.lvl, temp.x, temp.y); //Warp the NPC where you want



you could easily check the map when they spawn to make sure you maintain a max amount that are spawned on your map. It could get ugly if you don't you will end up with thousands of NPCs.


All times are GMT +2. The time now is 05:14 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Copyright (C) 1998-2019 Toonslab All Rights Reserved.