Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Don't change variables if you don't know what you are doing
- local wolf = null;
- local warn = 0; // if get 3 warns monster attack hero
- local test_npc = null;
- local startPosition = null; // variable to calculate first position of monster spawned
- local idTimer = null; // timer
- local randomnumber = null; // generate random number
- local nums = null; // generate random number
- local randomObrot = null; // generate random number
- local angle = null; // save vector of monster
- local x = null; // another timer
- local aggressive = false; // if we shot magic/crossbow/bow in high distance so monster are going to try kill us
- function spawnWolf()
- {
- spawnNpc(wolf);
- setPlayerInstance(wolf, "ZOMBIE01");
- setPlayerPosition(wolf, 180, -91, -1948);
- setPlayerColor(wolf, 255, 0, 0);
- setPlayerStrength(wolf, 200);
- setPlayerHealth(wolf, 1000);
- setPlayerMaxHealth(wolf, 1000);
- }
- local function Wolf_AI()
- {
- if (isPlayerDead(wolf)) return;
- local hPos = getPlayerPosition(heroId);
- local wPos = getPlayerPosition(wolf);
- local dist = getDistance3d(hPos.x, hPos.y, hPos.z, wPos.x, wPos.y, wPos.z);
- local distWolf = getDistance3d(wPos.x, wPos.y, wPos.z, startPosition.x, startPosition.y, startPosition.z);
- nums=rand()%55;
- if ((dist <= 1100 || aggressive == true) && getPlayerHealth(heroId) > 0)
- {
- if(warn < 3 && aggressive == false){
- setTimerInterval(idTimer,4000);
- angle = getVectorAngle(wPos.x, wPos.z, hPos.x, hPos.z);
- setPlayerAngle(wolf, angle);
- playAni(wolf,"T_WARN");
- setPlayerAngle(wolf, getPlayerAngle(wolf));
- warn++;
- }else if(warn >= 3 || aggressive == true){
- setTimerInterval(idTimer,500);
- local angle = getVectorAngle(wPos.x, wPos.z, hPos.x, hPos.z);
- setPlayerAngle(wolf, angle);
- warn++;
- if (dist <= 250)
- {
- if(dist <= 100)playAni(wolf,"T_FISTJUMPB");
- else{
- randomObrot = rand()%10;
- if (randomObrot >= 4 && randomObrot <= 5){playAni(wolf,"T_FISTJUMPB");setTimerInterval(idTimer,800);}
- else if (randomObrot >= 6 && randomObrot <= 7){
- {playAni(wolf,"T_FISTRUNSTRAFEL");setTimerInterval(idTimer,800);}
- }else if (randomObrot >= 8){
- {playAni(wolf,"T_FISTRUNSTRAFEL");setTimerInterval(idTimer,800);}
- }else{
- if(getPlayerAni(heroId) == "S_1HATTACK" || getPlayerAni(heroId) == "T_1HATTACKL" || getPlayerAni(heroId) == "T_1HATTACKR"){
- playAni(wolf,"T_STUMBLEB");
- setTimerInterval(idTimer,3200);
- }else {
- setTimerInterval(idTimer,1800);
- playAni(wolf, "S_FISTATTACK");
- if(getPlayerAni(heroId) == "T_1HPARADEJUMPB" || getPlayerAni(heroId) == "T_1HJUMPB"){
- }else {setTimerInterval(idTimer,1200);hitPlayer(wolf, heroId);}
- }
- }
- }
- }
- else{
- playAni(wolf, "S_FISTRUNL");}
- }
- if(dist >= 650 && nums == 19){playAni(wolf,"T_WARN");setTimerInterval(idTimer,4500);aggressive=false;}
- }else{
- setTimerInterval(idTimer,500);
- warn=0;
- if(distWolf >= 60){
- local angles = getVectorAngle(wPos.x, wPos.z, startPosition.x, startPosition.z);
- setPlayerAngle(wolf, angles);
- playAni(wolf, "S_FISTRUNL");
- }else{
- setTimerInterval(idTimer,5500);
- playAni(wolf,"S_FISTRUN")
- randomnumber = rand()%3;
- if(randomnumber==0)playAni(wolf,"R_ROAM1");
- else if(randomnumber==1)playAni(wolf,"R_ROAM2");
- else if(randomnumber==2)playAni(wolf,"R_ROAM3");
- }
- }
- }
- local function hitHandler(kid, pid, dmg)
- {
- print (kid + " " + pid + " -> " + dmg);
- if (pid == wolf){
- aggressive = true;
- }
- }
- addEventHandler("onPlayerHit", hitHandler);
- // function delete and spawn monster if we kill it
- function SpawnNpcs(){
- print("spawned npc!")
- unspawnNpc(wolf);
- spawnWolf();
- if (x != null){
- killTimer(x);
- }
- }
- local function deadHandler(pid)
- {
- print ("Die: " + pid);
- if (pid == wolf)
- {
- warn = 0;
- playAni(pid,"T_DEADB");
- x = setTimer(SpawnNpcs,12000,0);
- aggressive = false;
- }
- if (pid == heroId){warn=0;aggressive=false;}
- }
- addEventHandler("onPlayerDead", deadHandler);
- local function initHandler()
- {
- enableEvent_Render(true);
- // Test NPC
- test_npc = createNpc("Graham");
- spawnNpc(test_npc);
- setPlayerPosition(test_npc, 1310, -90, 332);
- setPlayerAngle(test_npc, 270);
- setPlayerColor(test_npc, 0, 0, 200);
- setPlayerHealth(test_npc, 1000);
- setPlayerMaxHealth(test_npc, 1000);
- setPlayerVisual(test_npc, "Hum_Body_Naked0", 3, "Hum_Head_Psionic", 59);
- equipArmor(test_npc, Items.id("ITAR_VLK_H"));
- playAni(test_npc, "S_HGUARD");
- // Our pet
- wolf = createNpc("Soiref");
- print("Soiref id: " + wolf);
- spawnWolf();
- startPosition = getPlayerPosition(wolf);
- idTimer = setTimer(Wolf_AI, 500, 0);
- }
- addEventHandler("onInit", initHandler);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement