405 | {/* Miku GIF */}
406 |
417 |
418 | {/* Attack Configuration */}
419 |
420 |
421 |
setTarget(e.target.value)}
425 | placeholder={t.targetPlaceholder}
426 | className={`${animState === 0 || animState === 3 ? "" : "text-white"
427 | } px-4 py-2 border border-pink-200 rounded-lg outline-none focus:border-pink-500 focus:ring-2 focus:ring-pink-200`}
428 | disabled={isAttacking}
429 | />
430 |
431 |
445 |
460 |
466 |
467 |
468 |
469 |
470 |
471 |
480 |
492 |
493 |
494 |
503 | setPacketSize(Number(e.target.value))}
507 | className={`${animState === 0 || animState === 3 ? "" : "text-white"
508 | } w-full px-4 py-2 border border-pink-200 rounded-lg outline-none focus:border-pink-500 focus:ring-2 focus:ring-pink-200`}
509 | disabled={isAttacking}
510 | min="1"
511 | max="1500"
512 | />
513 |
514 |
515 |
523 | setDuration(Number(e.target.value))}
527 | className={`${animState === 0 || animState === 3 ? "" : "text-white"
528 | } w-full px-4 py-2 border border-pink-200 rounded-lg outline-none focus:border-pink-500 focus:ring-2 focus:ring-pink-200`}
529 | disabled={isAttacking}
530 | min="1"
531 | max="300"
532 | />
533 |
534 |
535 |
544 | setPacketDelay(Number(e.target.value))}
548 | className={`${animState === 0 || animState === 3 ? "" : "text-white"
549 | } w-full px-4 py-2 border border-pink-200 rounded-lg outline-none focus:border-pink-500 focus:ring-2 focus:ring-pink-200`}
550 | disabled={isAttacking}
551 | min="1"
552 | max="1000"
553 | />
554 |
555 |
556 |
557 |
558 | {/* Direct Attack Toggle */}
559 |
560 | setUseMyIP(e.target.checked)}
565 | className="w-5 h-5 text-pink-600 rounded focus:ring-pink-500"
566 | disabled={isAttacking}
567 | />
568 |
573 |
574 |
575 |
576 |
577 | {/* Stats Widgets */}
578 |
579 |
580 |
581 |
582 | {t.statsPPS}
583 |
584 |
590 | {stats.pps.toLocaleString()}
591 |
592 |
593 |
594 |
595 |
596 | {t.statsBots}
597 |
598 |
604 | {stats.bots.toLocaleString()}
605 |
606 |
607 |
608 |
609 |
610 | {t.statsTotal}
611 |
612 |
618 | {stats.totalPackets.toLocaleString()}
619 |
620 |
621 |
622 |
623 | {/* Progress Bar */}
624 |
630 |
631 | {/* Logs Section */}
632 |
633 |
634 | {logs.map((log, index) => (
635 |
636 | {`> ${log}`}
637 |
638 | ))}
639 | {logs.length === 0 && (
640 |
641 | {">"} {t.logsWaiting}
642 |
643 | )}
644 |
645 |
646 |
647 | {/* Cute Animation Overlay */}
648 | {isAttacking && (
649 |
655 | )}
656 |